J'ai un répertoire de fichier journal qui contient 82000 fichiers et répertoires (environ la moitié et la moitié).
Je dois supprimer tous les fichiers et répertoires de plus de 3 jours.
Dans un répertoire contenant 37 000 fichiers, j'ai pu le faire avec:
find * -mtime +3 -exec rm {} \;
Mais avec 82000 fichiers/répertoires, j'obtiens l'erreur:
/ usr/bin/find: la liste d'arguments est trop longue
Comment puis-je contourner cette erreur afin de pouvoir supprimer tous les fichiers/répertoires de plus de 3 jours?
Pour supprimer tous les fichiers et répertoires du répertoire actuel:
find . -mtime +3 | xargs rm -Rf
Ou alternativement, plus en ligne avec la commande originale du PO:
find . -mtime +3 -exec rm -Rf -- {} \;
Peut aussi utiliser:
find . -mindepth 1 -mtime +3 -delete
Pour ne pas supprimer le répertoire cible
Une autre solution pour la question initiale, esp. utile si vous voulez ne supprimer que CERTAINS des fichiers les plus anciens d'un dossier, ressemblerait à ceci:
find . -name "*.sess" -mtime +100
et ainsi de suite .. Les citations bloquent les caractères génériques de Shell, vous permettant ainsi de "trouver" des millions de fichiers :)