J'ai un répertoire avec des fichiers de l'année 2010 .. Je veux supprimer tous les fichiers de plus de 500 jours et j'ai essayé ceci:
find /var/log/arc/* -type f -mtime +500 -delete {}\;
Mais je comprends ceci:
-bash: /usr/bin/find: Argument list too long
Comme je le sais, cela signifie qu'il y a trop de fichiers et que je find
ne peux pas les gérer. Mais même si je mets +2000
3 ans ou plus, j'obtiens toujours cela.
Qu'est-ce qui me manque ici?
Réponses:
Vous manquez qui
find
n'a pas besoin d'une liste de fichiers en entrée. Le problème est que le glob/var/log/arc/*
s'étend à trop de fichiers. Cependant,find
récursif dans les sous-répertoires par défaut, il n'est donc pas nécessaire d'utiliser le glob du tout:-delete
est un prédicat non standard. Si votrefind
implémentation ne la prend pas en charge, vous pouvez utiliser:au lieu.
la source
find: invalid predicate
-delete'`-delete
ne prend pas{}
. Voir mise à jour. Cependant, votre message d'erreur semble suggérer que votre version defind
ne prend pas en charge-delete
. Si vous n'utilisez pas GNUfind
(ce que vous n'utiliserez dans la plupart des cas que si vous utilisez Linux), vous devez utiliser à la-exec -rm {} \;
place.-exec rm {} \;
faire l'affaire.-exec
est défini par POSIX .