Comment supprimer tous les fichiers de plus de 3 jours lorsque “liste d'arguments trop longue”?
J'ai un répertoire du fichier journal qui a 82000 fichiers et de répertoires (environ moitié-moitié).
J'ai besoin de supprimer tous les fichiers et répertoires qui sont âgés de plus de 3 jours.
Dans un répertoire qui a 37000 fichiers, j'ai été capable de le faire avec:
find * -mtime +3 -exec rm {} \;
Mais avec 82000 fichiers/répertoires, j'obtiens l'erreur:
/usr/bin/find: liste d'arguments trop longue
Comment puis-je obtenir autour de cette erreur, de sorte que je peux supprimer tous les fichiers/répertoires qui sont âgés de plus de 3 jours?
- Avez-vous essayé
find -mtime +3 -exec rm {} +
? - Je crois que l'exécution de
find * -mtime +3 |xargs rm
permettrait de résoudre ce problème. - Je pense que le seul problème est
find *
.find .
est mieux. La coquille globing avec d'élargir le*
à une énorme liste de fichiers et de répertoires. - est sur place.
Vous devez vous connecter pour publier un commentaire.
Pour supprimer tous les fichiers et répertoires dans la actuel répertoire:
Ou encore, plus en ligne avec les OP de la commande d'origine:
--
après rm, commefind . -mtime +3 -exec rm -- {} \;
xargs
ne gère pas les espaces dans les chemins, à moins que vous fournissez-print0
àfind
et-0
àxargs
.find . -mtime +3 -delete
--
est pour.Pouvez également utiliser:
De ne pas supprimer le répertoire cible
Une autre solution pour la question d'origine, esp. utile si vous souhaitez supprimer CERTAINS des anciens fichiers dans un dossier, serait qch comme ceci:
et ainsi de suite.. Citations bloc de caractères génériques du shell, vous permettant ainsi de "trouver" des millions de fichiers 🙂