Viele Dateien löschen
Wenn ich unter Linux auf der Kommandozeile mehrere tausend Dateien mit ‘rm ~/texte/*.txt’ löschen möchte, bekomme ich die Fehlermeldung ‘bash: /bin/rm: Argument list too long’. Was kann man da tun?
Wenn ich unter Linux auf der Kommandozeile mehrere tausend Dateien mit ‘rm ~/texte/*.txt’ löschen möchte, bekomme ich die Fehlermeldung ‘bash: /bin/rm: Argument list too long’. Was kann man da tun?
Unter Linux expandiert die Shell (üblicherweise die bash) Wildcards wie ‘*’ bei der Angabe von Dateinamen. Dabei gibt es eine maximale Menge von Speicher, die die im Betriebssystem festgelegte Liste der aufgelösten Dateinamen belegen darf. Unter Linux beträgt dieser Wert typischerweise 128 KByte (er lässt sich mit ‘getconf ARG_MAX’ in Erfahrung bringen). Da bereits die Shell an diesem Betriebssystem-Limit scheitert, sind alle Programme gleichermaßen betroffen, die man aus der Shell mit Wildcards startet. Abhilfe bietet der ‘find’-Befehl, der Wildcards selbst auflöst. Ein
find ~/texte -name "*.txt" -exec rm {} \;
sollte alle *.txt-Dateien im Verzeichnis ~/texte löschen. (odi) (odi)