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-print0undxargs -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 🙂