Ich habe ein Verzeichnis von 30 TB mit Milliarden von Dateien, die formal alle JPEG-Dateien sind. Ich lösche jeden Ordner mit Dateien wie folgt:
sudo rm -rf bolands-mills-mhcptz
Dieser Befehl wird einfach ausgeführt und zeigt nichts an, ob er funktioniert oder nicht.
Ich möchte sehen, wie Dateien gelöscht werden oder wie der aktuelle Status des Befehls ist.
Akzeptierte Antwort:
Sie können rm -v verwenden rm haben drucke eine Zeile pro gelöschter Datei. Auf diese Weise können Sie diesen rm sehen arbeitet tatsächlich daran, Dateien zu löschen. Aber wenn Sie Milliarden von Dateien haben, dann sehen Sie nur diesen rm arbeitet noch. Sie werden keine Ahnung haben, wie viele Dateien bereits gelöscht wurden und wie viele noch übrig sind.
Das Tool pv kann Ihnen bei einer Fortschrittsschätzung helfen.
http://www.ivarch.com/programs/pv.shtml
So würden Sie rm aufrufen mit pv mit Beispielausgabe
$ rm -rv dirname | pv -l -s 1000 > logfile
562 0:00:07 [79,8 /s] [====================> ] 56% ETA 0:00:05
In diesem erfundenen Beispiel habe ich pv gesagt dass es 1000 gibt Dateien. Die Ausgabe von pv zeigt, dass 562 bereits gelöscht wurden, die verstrichene Zeit 7 Sekunden beträgt und die Schätzung bis zum Abschluss in 5 Sekunden liegt.
Einige Erklärungen:
pv -lmachtpvmit Zeilenumbrüchen statt mit Bytes zu zählenpv -s numbersagtpvwas die Summe ist, damit Sie eine Schätzung erhalten können.- Die Weiterleitung zur
logfileam Ende ist für saubere Ausgabe. Ansonsten die Statuszeile vonpvmit der Ausgabe vonrm -vverwechselt wird . Bonus:Sie erhalten eine Protokolldatei darüber, was gelöscht wurde. Aber Vorsicht, die Datei wird riesig. Sie können auch zu/dev/nullumleiten wenn Sie kein Protokoll benötigen.
Um die Anzahl der Dateien zu erhalten, können Sie diesen Befehl verwenden:
$ find dirname | wc -l
Auch dies kann sehr lange dauern, wenn es sich um Milliarden von Dateien handelt. Sie können pv verwenden auch hier, um zu sehen, wie viel es gezählt hat
$ find dirname | pv -l | wc -l
278k 0:00:04 [56,8k/s] [ <=> ]
278044
Hier heißt es, dass es 4 Sekunden gedauert hat, 278.000 Dateien zu zählen. Die genaue Anzahl am Ende (278044 ) ist die Ausgabe von wc -l .
Wenn Sie nicht auf das Zählen warten möchten, können Sie entweder die Anzahl der Dateien erraten oder pv verwenden ohne Schätzung:
$ rm -rv dirname | pv -l > logfile
So haben Sie keine Schätzung mehr, aber zumindest sehen Sie, wie viele Dateien bereits gelöscht wurden. Weiterleitung nach /dev/null wenn Sie die Logdatei nicht benötigen.
Nitpick:
- brauchen Sie wirklich
sudo? - normalerweise
rm -rreicht aus, um rekursiv zu löschen. keine Notwendigkeit fürrm -f.