J'écris ci-dessous la commande pour supprimer tous les fichiers de plus de 7 jours, mais cela ne fonctionne pas:
find /media/bkfolder/ -mtime +7 -name'*.gz' -exec rm {} \;
Comment puis-je supprimer ces fichiers?
command-line
delete
find
rm
Malihe Pakyari
la source
la source
name
et'*.gz'
.Réponses:
Comme @Jos l'a souligné, vous avez manqué un espace entre
name
et'*.gz'
; aussi pour accélérer l'utilisation de commandes-type f
option pour exécuter la commande sur f iles uniquement.Donc, la commande fixe serait:
Explication:
find
: La commande unix pour trouver f iles / d irectories / l encres et etc./path/to/
: le répertoire dans lequel démarrer votre recherche.-type f
: ne trouve que des fichiers.-name '*.gz'
: liste les fichiers qui finissent par.gz
.-mtime +7
: ne considérer que ceux dont le temps de modification est supérieur à 7 jours.-execdir ... \;
: pour chaque résultat trouvé, effectuez la commande suivante dans...
.rm -- '{}'
: supprimer le fichier; la{}
partie est l'endroit où le résultat de la recherche est remplacé par la partie précédente.--
signifie que les paramètres de fin de commande évitent les erreurs d'invite pour les fichiers commençant par un trait d' union .Sinon, utilisez:
De l' homme trouver :
Ce qui est un peu plus efficace, car cela revient à:
par opposition à:
comme dans la
-exec
méthode.Une alternative et aussi plus rapide commande utilise exec de
+
la terminaison au lieu de\;
:Cette commande ne sera exécutée
rm
qu'une fois à la fin au lieu de chaque fois qu'un fichier est trouvé et cette commande est presque aussi rapide que d'utiliser l'-delete
option suivantefind
:la source
-delete
à la fin? Pourquoi jouer avec le+
ou\;
?Faites attention en supprimant les fichiers avec find. Exécutez la commande avec -ls pour vérifier ce que vous supprimez.
find /media/bkfolder/ -mtime +7 -name '*.gz' -ls
. Ensuite, tirez la commande de l'historique et ajoutez-exec rm {} \;
Limitez les dégâts qu'une commande de recherche peut faire. Si vous souhaitez supprimer des fichiers d'un seul répertoire,
-maxdepth 1
empêche find de parcourir les sous-répertoires ou de rechercher le système complet si vous tapez/media/bkfolder /
.Les autres limites que j’ajoute sont des arguments de nom plus spécifiques
-name 'wncw*.gz'
, comme l’ ajout d’un temps plus récent-mtime -31
et la citation des répertoires recherchés. Celles-ci sont particulièrement importantes si vous automatisez des nettoyages.find "/media/bkfolder/" -maxdepth 1 -type f -mtime +7 -mtime -31 -name 'wncw*.gz' -ls -exec rm {} \;
la source