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

Löschen Sie alle bis auf 1000 zufällige Dateien in einem Verzeichnis

Alle bis auf 1000 zufällige Dateien in einem Verzeichnis löschen

Code:

find /path/to/dir -type f -print0 | sort -zR | tail -zn +1001 | xargs -0 rm

Erklärung:

  1. Alle Dateien in /path/to/dir auflisten mit find;
    • print0 :Verwenden Sie \0 (Nullzeichen ) als Zeilentrennzeichen; damit Dateipfade, die Leerzeichen/Zeilenumbrüche enthalten, das Skript nicht beschädigen
  2. Mischen Sie die Dateiliste mit sort;
    • -z :Verwenden Sie \0 (Nullzeichen) als Trennzeichen, statt \n (ein Zeilenumbruch)
    • -R :zufällige Reihenfolge
  3. Entfernen Sie die ersten 1000 Zeilen aus der randomisierten Liste mit tail;
    • -z :Behandle die Liste als durch Null getrennt (wie bei sort )
    • -n +1001 :Zeilen ab 1001 anzeigen (dh die ersten 1000 Zeilen weglassen)
  4. xargs -0 rm - Entfernen Sie die verbleibenden Dateien;
    • -0 :wieder nullbegrenzt

Warum es besser ist als die Lösung von Quixotic*:

  1. Funktioniert mit Dateinamen, die Leerzeichen/Zeilenumbrüche enthalten.
  2. Versucht nicht, Verzeichnisse zu erstellen (die übrigens bereits existieren könnten)
  3. Verschiebt keine Dateien, berührt nicht einmal die 1000 "Glücksdateien", außer dass sie mit find aufgelistet werden .
  4. Vermeidet das Fehlen einer Datei im Falle der Ausgabe von find endet nicht mit \n (newline) aus irgendeinem Grund.

* - Dank an Quixotic für | sort -R | head -1000 , gab mir einen Ausgangspunkt.


Linux
  1. Alle neuen Dateien in einem Verzeichnis einer Gruppe zugänglich machen?

  2. Alle Dateien in einem Verzeichnis löschen, dessen Name nicht mit einer Zeile in einer Dateiliste übereinstimmt?

  3. Wie lösche ich alle Dateien mit einer bestimmten Erweiterung in einem bestimmten Ordner?

  4. Alle Dateien außer den Dateien im Array abrufen – Bash?

  5. Entpacken Sie alle Dateien in einem Verzeichnis

So ändern Sie alle Vorkommen eines Wortes in allen Dateien in einem Verzeichnis

Linux-Befehl zum Leeren aller Dateien eines Verzeichnisses

Finden Sie alle Null-Byte-Dateien in Verzeichnissen und Unterverzeichnissen

Löschen Sie übereinstimmende Dateien in allen Unterverzeichnissen

Wie lösche ich alle Dateien in einem Verzeichnis außer einigen?

Alle Dateien im Verzeichnis einer Website anzeigen?