J'ai un répertoire de 30 To contenant des milliards de fichiers qui sont formellement tous des fichiers JPEG. Je supprime chaque dossier de fichiers comme ceci :
sudo rm -rf bolands-mills-mhcptz
Cette commande s'exécute simplement et n'affiche rien, qu'elle fonctionne ou non.
Je veux voir comment il supprime des fichiers ou quel est l'état actuel de la commande.
Réponse acceptée :
Vous pouvez utiliser rm -v
avoir rm
imprimer une ligne par fichier supprimé. De cette façon, vous pouvez voir que rm
travaille en effet pour supprimer des fichiers. Mais si vous avez des milliards de fichiers, tout ce que vous verrez, c'est que rm
fonctionne toujours. Vous n'aurez aucune idée du nombre de fichiers déjà supprimés et du nombre restant.
L'outil pv
peut vous aider avec une estimation des progrès.
http://www.ivarch.com/programs/pv.shtml
Voici comment invoquer rm
avec pv
avec exemple de sortie
$ rm -rv dirname | pv -l -s 1000 > logfile
562 0:00:07 [79,8 /s] [====================> ] 56% ETA 0:00:05
Dans cet exemple artificiel, j'ai dit pv
qu'il y a 1000
des dossiers. La sortie de pv
montre que 562 sont déjà supprimés, le temps écoulé est de 7 secondes et l'estimation pour terminer est de 5 secondes.
Quelques explications :
pv -l
faitpv
compter par nouvelle ligne au lieu d'octetspv -s number
indiquepv
quel est le total pour qu'il puisse vous donner une estimation.- La redirection vers
logfile
à la fin est pour une sortie propre. Sinon la ligne d'état depv
se confond avec la sortie derm -v
. Bonus :vous aurez un fichier journal de ce qui a été supprimé. Mais attention, le fichier va devenir énorme. Vous pouvez également rediriger vers/dev/null
si vous n'avez pas besoin d'un journal.
Pour obtenir le nombre de fichiers, vous pouvez utiliser cette commande :
$ find dirname | wc -l
Cela peut également prendre beaucoup de temps s'il y a des milliards de fichiers. Vous pouvez utiliser pv
ici aussi pour voir combien ça a compté
$ find dirname | pv -l | wc -l
278k 0:00:04 [56,8k/s] [ <=> ]
278044
Ici, il est dit qu'il a fallu 4 secondes pour compter 278 000 fichiers. Le décompte exact à la fin (278044
) est la sortie de wc -l
.
Si vous ne voulez pas attendre le décompte, vous pouvez soit deviner le nombre de fichiers, soit utiliser pv
sans estimation :
$ rm -rv dirname | pv -l > logfile
Comme ça vous n'aurez aucune estimation pour finir mais au moins vous verrez combien de fichiers sont déjà supprimés. Rediriger vers /dev/null
si vous n'avez pas besoin du fichier journal.
Pique-nique :
- avez-vous vraiment besoin de
sudo
? - habituellement
rm -r
suffit de supprimer récursivement. pas besoin derm -f
.