GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie lösche ich mehrere Ordner parallel?

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.

  • Löschen von Dateien nach Größe
  • find /yourpath/folder1 -size +1048576 -exec rm -f {} \; &
    find /yourpath/folder2 -size +1048576 -exec rm -f {} \; &
    

  • Löschen von Dateien nach Erweiterung
  • Finden Sie Erweiterungen mit dem folgenden Befehl
    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 {} \; &
    

  • Löschen von Dateien nach Änderungszeit
  • Der folgende Befehl versucht, Dateien zu löschen, die älter als 5 Tage sind.
    find yourpath/folder1 -mtime +5 -exec rm {} \;
    

    ODER

    find yourpath/folder2 -mtime +5 |xargs rm 
    

  • Löschen des Ordners und seiner Unterordner einschließlich seiner Dateien
  • find foldername -exec rm -rf {} \; &
    


    Linux
    1. Wie benenne ich mehrere Dateien mit Find um?

    2. Wie finde ich mehrere Zeichenfolgen in Dateien?

    3. So finden und löschen Sie leere Verzeichnisse und Dateien in Unix

    4. So finden und löschen Sie leere Verzeichnisse und Dateien in Linux

    5. So entfernen Sie Ordner mit einem bestimmten Namen

    So finden und löschen Sie defekte Symlinks in Linux

    So finden Sie die IP-Adresse unter Linux

    So finden Sie den Hostnamen unter Linux

    So finden und löschen Sie leere Verzeichnisse in Linux

    So löschen Sie mehrere Zeilen in Vim

    So finden Sie Ordner in Linux