Est-il possible de déterminer la progression d'une commande rm?

18

L'utilisation rm -rf LargeDirectoryde la suppression d'un répertoire volumineux peut prendre beaucoup de temps, selon la taille du répertoire.

Est-il possible d'obtenir une mise à jour de l'état ou de surveiller d'une manière ou d'une autre la progression de cette suppression pour donner une estimation approximative de la progression du processus dans la commande?

John
la source
4
Essayez watch -n 5 du -s LargeDirectory. Regardez comme il va à zéro.
Mark Plotnick
@MarkPlotnick: sur MacOS, vous devez l'installer avec brew install watch, ou voir ici pour les instructions.
smci

Réponses:

19

de

man rm 

utilisez l'option -v:

-v, --verbose
explain what is being done
simozz
la source
4
ce n'est pas un progrès cependant. comment «supprimer maintenant foo / bar» vous aide-t-il à déterminer dans quelle mesure la chose complète est?
mouton volant
@flyingsheep pense qu'il supprime tout par ordre alphabétique, du moins sous OSX, donc cela aide d'une certaine manière ..
Tim Baas
7

Je vois que la question est ancienne. Je veux partager ce que cela fonctionne pour moi, peut-être pour aider quelqu'un d'autre.

J'obtiens la barre de progression en utilisant la pvligne de commande Pipe Viewer

C'est la commande

rm -rv DIR_OR_FILE_NAME | pv -l -s $ (du -a DIR_OR_FILE_NAME | wc -l)> / dev / null

Si vous avez besoin des autorisations root pour le répertoire ou le fichier à supprimer,

sudo rm -rv DIR_OR_FILE_NAME | pv -l -s $ (sudo du -a DIR_OR_FILE_NAME | wc -l)> / dev / null
  • rm -rv: -rpour supprimer récursivement les DIR et les fichiers. -vverbeux, il répertorie tous les fichiers et répertoires supprimés.

  • pv -l -s: -lpour compter les lignes au lieu des octets. -sdéfinissez le nombre total de lignes à supprimer.

  • $( du -a <dir_or_file> | wc -l ): du -arenvoie une liste de tous les fichiers et répertoires du répertoire spécifié. wc -lrenvoie le nombre de lignes générées par du -a.

  • > /dev/null: envoyer la sortie de rm -rvnulle part.

Ezequiel
la source
Bonne idée. Cela peut donner un nombre de fichiers / répertoires incorrect si des noms contiennent des retours à la ligne; find {dir} -printf . | wc -cserait plus sûr (mais -printfc'est une extension GNU).
Scott
C'est en fait ce que je cherchais, merci. D'autres commentaires ont laissé quelque chose de manquant.
Hellreaver
3

Vous pouvez afficher la progression de toutes les commandes en cours d'exécution avec Coreutils Progress Viewer ( cv). Ce n'est pas comme émettre une seule commande, mais vous pouvez voir la progression de celle-ci.

exemple de CV utilisé

Je suis sûr que quelqu'un peut trouver un alias pour exécuter cela avec la commande. Il fonctionne également avec cp, mv, dd, tar, gzip/gunzip, cat, etc.. Plus de détails à ce sujet peuvent être trouvés sur

gitthub Xfennec / progress

Ashitakalax
la source
2
Puisque progress (comme "cv" est maintenant connu) suit les fichiers ouverts et que rm n'ouvre pas les fichiers qu'il supprime, cela peut ne pas être très utile.
dhag
2
@dhag Votre droit, je pensais que cela fonctionnerait pour rm. Maintenant, je suis en train de débattre de l'opportunité de supprimer la réponse. hmm
Ashitakalax