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

Linux – Große Verzeichnisse mit Tausenden von Dateien effizient löschen?

Wir haben ein Problem mit einem Ordner, der mit Hunderttausenden kleiner Dateien unhandlich wird.

Es gibt so viele Dateien, die rm -rf ausführen gibt einen Fehler zurück und stattdessen müssen wir etwas tun wie:

find /path/to/folder -name "filenamestart*" -type f -exec rm -f {} ;

Dies funktioniert, ist aber sehr langsam und schlägt ständig fehl, weil der Speicher knapp wird.

Gibt es einen besseren Weg, dies zu tun? Idealerweise möchte ich das gesamte Verzeichnis entfernen, ohne mich um den Inhalt darin zu kümmern.

Akzeptierte Antwort:

Die Verwendung von rsync ist überraschend schnell und einfach.

mkdir empty_dir
rsync -a --delete empty_dir/    yourdirectory/

@saraths Antwort erwähnte eine weitere schnelle Wahl:Perl! Seine Benchmarks sind schneller als rsync -a --delete .

cd yourdirectory
perl -e 'for(<*>){((stat)[9]<(unlink))}'

Quellen:

  1. https://stackoverflow.com/questions/1795370/unix-fast-remove-directory-for-cleaning-up-daily-builds
  2. http://www.slashroot.in/was-ist-die-schnellste-methode-um-dateien-unter-linux-zu-löschen

Linux
  1. Praktische Beispiele für den rsync-Befehl unter Linux

  2. 5 praktische Beispiele zum Löschen / Entfernen von Verzeichnissen in Linux

  3. Linux-Äquivalent zu Robocopy?

  4. rsync N neueste Dateien in einem Verzeichnis

  5. rsync löscht keine Dateien am Ziel

Älteste Datei finden und löschen, wenn mehr als X Dateien in einem Verzeichnis in Linux vorhanden sind

So verschieben Sie eine große Anzahl von Dateien in Linux

So kopieren Sie eine große Anzahl von Dateien unter Linux

So zählen Sie Dateien im Verzeichnis unter Linux

Zählen Sie die Anzahl der Dateien in einem Verzeichnis in Linux

Linux rsync-Befehlsbeispiele