Ist es möglich, den Fortschritt eines rm-Befehls zu bestimmen?

18

Das rm -rf LargeDirectoryLöschen eines großen Verzeichnisses kann je nach Größe des Verzeichnisses einige Zeit in Anspruch nehmen.

Ist es möglich, eine Statusaktualisierung zu erhalten oder den Fortschritt dieses Löschvorgangs zu überwachen, um eine grobe Schätzung zu erhalten, wo sich der Befehl im Verlauf befindet?

John
quelle
4
Versuchen Sie es watch -n 5 du -s LargeDirectory. Beobachten Sie, wie es auf Null geht.
Mark Plotnick
@ MarkPlotnick: Auf MacOS muss es mit installiert werden brew install watch, oder siehe hier für Anweisungen.
smci

Antworten:

19

von

man rm 

benutze die -v Option:

-v, --verbose
explain what is being done
simozz
quelle
4
das ist aber kein Fortschritt. Inwiefern hilft Ihnen das Löschen von foo / bar, festzustellen, inwieweit das Ganze vollständig ist?
fliegende Schafe
@flyingsheep glaubt, dass es alles in alphabetischer Reihenfolge entfernt, zumindest in OSX, also hilft es in gewisser Weise ..
Tim Baas
7

Ich sehe, die Frage ist alt. Ich möchte mitteilen, was für mich funktioniert, um vielleicht jemand anderem zu helfen.

Ich erhalte die Fortschrittsanzeige über die pvBefehlszeile Pipe Viewer

Das ist der Befehl

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

Wenn Sie Root-Berechtigungen zum Löschen des Verzeichnisses oder der Datei benötigen,

sudo rm -rv DIR_OR_FILE_NAME | pv -l -s $ (sudo du -a DIR_OR_FILE_NAME | wc -l)> / dev / null
  • rm -rv: -rum rekursiv DIRs und Dateien zu entfernen. -vAusführlich listet es alle Dateien und Verzeichnisse auf, die entfernt werden.

  • pv -l -s: -lum Zeilen anstelle von Bytes zu zählen. -sStellen Sie die Gesamtzahl der zu entfernenden Zeilen ein.

  • $( du -a <dir_or_file> | wc -l ): du -agibt eine Liste aller Dateien und Verzeichnisse aus dem angegebenen Verzeichnis zurück. wc -lGibt die Anzahl der von ausgegebenen Zeilen zurück du -a.

  • > /dev/null: Senden Sie die Ausgabe von rm -rvnach nirgendwo.

Ezequiel
quelle
Gute Idee. Dies kann zu einer falschen Datei- / Verzeichnisanzahl führen, wenn Namen Zeilenumbrüche enthalten. find {dir} -printf . | wc -cwäre sicherer (ist aber -printfeine GNU-Erweiterung).
Scott
Das ist genau das, wonach ich gesucht habe, danke. Andere Kommentare ließen etwas zu wünschen übrig.
Hellreaver
3

Mit Coreutils Progress Viewer ( cv) können Sie den Fortschritt aller derzeit ausgeführten Befehle anzeigen . Es ist nicht so, als würde man einen einzelnen Befehl ausgeben, aber man kann den Fortschritt sehen.

Beispiel für den verwendeten Lebenslauf

Ich bin sicher, dass sich jemand einen Alias ​​ausdenken kann, um dies mit dem Befehl auszuführen. Es funktioniert auch mit cp, mv, dd, tar, gzip/gunzip, cat, etc.. Weitere Details dazu finden Sie unter

Gitthub Xfennec / Fortschritt

Ashitakalax
quelle
2
Da der Fortschritt (wie "cv" jetzt bekannt ist) offene Dateien verfolgt und rm die gelöschten Dateien nicht öffnet, ist dies möglicherweise nicht sehr nützlich.
Dhag
2
@dhag Du hast Recht, ich dachte, dass dies für rm funktionieren würde. Jetzt überlege ich, ob ich die Antwort entfernen soll. hmm
Ashitakalax