Wenn sich in einem Verzeichnis zu viele Dateien ansammeln, kann es passieren, dass der Befehl rm
mit der Fehlermeldung „Argumentliste zu lang“ abbricht.
Das liegt daran, dass die Shell eine Begrenzung für die Anzahl der Argumente hat, die sie verarbeiten kann. Um das zu umgehen, kannst du find
und xargs
nutzen, die die Dateien schrittweise verarbeiten.
Alle Dateien im aktuellen Verzeichnis löschen
find . -type f -print0 | xargs -0 rm
find . -type f
: Findet alle Dateien im aktuellen Verzeichnis und dessen Unterverzeichnissen-print0
undxargs -0
: Null-Byte-Trennzeichen, damit Dateinamen mit Leer- oder Sonderzeichen korrekt verarbeitet werden
Bestimmte Dateitypen löschen, z. B. alle JavaScript-Dateien
find . -name "*.js" -print0 | xargs -0 rm
-name "*.js"
: Filtert nach Dateien mit der Endung.js
Löschvorgang beschleunigen mit xargs
und dem -n
Parameter
find . -name "*.js" -print0 | xargs -0 -n1000 rm
-n1000
: Übergibt jeweils 1000 Dateien pro Aufruf anrm
, was den Löschvorgang effizienter macht
Vor dem Löschen prüfen:
Nutze echo
, um die betroffenen Dateien erst einmal anzuzeigen:
find . -name "*.js" -print0 | xargs -0 -n1000 echo
Um alle Datein im Vezeichniss zu löschen hätte auch:
funktioniert 🙂