1 votes

Comment supprimer des dossiers toutes les N minutes à partir de la ligne de commande ?

Je suis en train d'essayer d'exécuter la commande ci-dessous pour supprimer les dossiers tmp de plus de 3 minutes en utilisant la commande ci-dessous :

 find /tmp/tmp* -mmin +3 -exec rm -rf {} \;

La commande ci-dessus échoue. Pourquoi ?

find /tmp/tmp* -mmin +3 -exec rm -rf {} \;
find: `/tmp/tmpAJaHLX/crashes': No such file or directory
find: `/tmp/tmpbM5ac8/minidumps': No such file or directory
find: `/tmp/tmpbM5ac8/crashes/events': No such file or directory
find: `/tmp/tmpdQACdf/gmp': No such file or directory
find: `/tmp/tmpo1tbqu/thumbnails': No such file or directory
find: `/tmp/tmpW91Yel/extensions': No such file or directory

2voto

steeldriver Points 118154

Ce que vous voyez est probablement le résultat de l'action de la find de la commande ordre de passage .

Par exemple, avec un simple répertoire

$ find somedir
somedir
somedir/file

puis

$ find somedir -exec rm -rfv {} \;
removed ‘somedir/file’
removed directory: ‘somedir’
find: `somedir': No such file or directory

Vous pouvez forcer une traversée en profondeur à l'aide de l'option -depth l'option, c'est-à-dire

$ find somedir -depth -exec rm -rfv {} \;
removed ‘somedir/file’
removed directory: ‘somedir’

n'entraîne pas d'erreur.

Alternativement, vous pouvez utiliser la méthode plus simple find somedir -delete qui (comme indiqué dans la page du manuel) allume la fonction -depth option

-delete
       Delete files; true if removal succeeded.  If the removal failed,
       an  error message is issued.  If -delete fails, find's exit sta
       tus will be nonzero (when it eventually exits).  Use of  -delete
       automatically turns on the -depth option.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X