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 -l
machtpv
mit Zeilenumbrüchen statt mit Bytes zu zählenpv -s number
sagtpv
was die Summe ist, damit Sie eine Schätzung erhalten können.- Die Weiterleitung zur
logfile
am Ende ist für saubere Ausgabe. Ansonsten die Statuszeile vonpv
mit der Ausgabe vonrm -v
verwechselt wird . Bonus:Sie erhalten eine Protokolldatei darüber, was gelöscht wurde. Aber Vorsicht, die Datei wird riesig. Sie können auch zu/dev/null
umleiten 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 -r
reicht aus, um rekursiv zu löschen. keine Notwendigkeit fürrm -f
.