Nur für den Fall, dass Sie mehr tun möchten, als Verzeichnisse parallel zu entfernen, können Sie mit GNU parallel eine Menge paralleler, ausgefallener Dinge tun. Da es in Distributionen oft kein Basisdienstprogramm ist, müssen Sie es möglicherweise mit Ihrem bevorzugten Paketmanager installieren, z. apt-get install parallel
.
Aber dann können Sie coole Sachen wie diese machen, sagen Sie, Sie führen 4 parallele Prozesse aus, möchten den Fortschritt zeigen, keine nörgelnde Benachrichtigung und lassen parallel einen Ruhebefehl laufen, der jeweils 5s, 10s, 15s, 20s wartet.
$ parallel -j 4 --progress --no-notice sleep ::: 5 10 15 20
Computers / CPU cores / Max jobs to run
1:local / 4 / 4
Computer:jobs running/jobs completed/%of started jobs/Average seconds to complete
local:0/4/100%/5.0s
Ihr Beispiel würde so laufen:
$ parallel --no-notice rm -rf ::: dir1 dir2 dir3
Fühlen Sie sich frei, das feine Tutorial zu konsultieren.
Ich musste so schnell wie möglich einige Ordner in /media aufräumen.
Der folgende Befehl konnte 9 TB Daten auf jeder der 80 Festplatten in etwa 5 Minuten löschen
$ sudo find /media -maxdepth 2 -name "data-8" -type d | while read folder; do eval "sudo rm -rf ${folder} &"; done
Dadurch wurden 80 parallele rm -rf
gekickt im Hintergrund
Führen Sie die Befehle im Hintergrund aus
rm -rf dir &; rm -rf dir2 &;
Syntax
long_command with arguments > redirection &
Sie können alle Nachrichten erfassen, indem Sie die Befehlsausgabe in eine Datei umleiten.
Diese Links helfen ==> http://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO-3.html
Bearbeiten :
Der Titel der Frage und das angegebene Beispiel erwecken den Eindruck, als wäre das Problem sehr gering. Aber eine zusätzliche Belohnung, die die Ernsthaftigkeit des Problems zeigt.
Es wäre besser, wenn Sie die Art Ihrer Dateien angeben. Ich biete jedoch einige Split-basierte Löschungen an, die als parallele Ausführungen implementiert werden können. Sie können die folgenden Optionen basierend auf Ihren Anforderungen ausprobieren.
find /yourpath/folder1 -size +1048576 -exec rm -f {} \; &
find /yourpath/folder2 -size +1048576 -exec rm -f {} \; &
ls -l /yourpath/folder1 | awk '{print $9}' | awk -F. '{print $(NF)}' |sort |uniq
Sie erhalten möglicherweise ein Ergebnis wie
.txt
.log
.tmp
.zip
Löschen Sie jetzt die Dateien basierend auf Erweiterungen
find yourpath/folder1 -name '*.txt' -exec rm {} \; &
find yourpath/folder1 -name '*.tmp' -exec rm {} \; &
find yourpath/folder1 -name '*.log' -exec rm {} \; &
find yourpath/folder2 -name '*.txt' -exec rm {} \; &
find yourpath/folder2 -name '*.tmp' -exec rm {} \; &
find yourpath/folder2 -name '*.log' -exec rm {} \; &
find yourpath/folder1 -mtime +5 -exec rm {} \;
ODER
find yourpath/folder2 -mtime +5 |xargs rm
find foldername -exec rm -rf {} \; &