Ich habe einen Ordner mit 137795 Dateien. Ich muss sie alle löschen. Beim Ausführen rm *
erhalte ich -bash: /bin/rm: Argument list too long
. Wie behebe ich diesen Fehler?
Antwort1
Wie ich sehe, müssen Sie Ihr Verzeichnis nicht löschen, sondern nur die darin enthaltenen Dateien. Sie können es also neu erstellen
rm -r /path/to/dir && mkdir /path/to/dir
oder sogar nur Dateien darin löschen
find /path/to/dir -type f -delete
meiner Meinung nach funktioniert das erste schneller.
UPD. Beachten Sie, dass die Methode find
vom Platzbedarf her möglicherweise nicht optimal ist, da die Verzeichnisgröße erst nach reduziert wird fsck
.Einzelheiten.
Antwort2
Problemumgehung Nr. 1:
find /path/to/dir -delete
Problemumgehung Nr. 2:
rm a*;
rm b*;
rm c*;
etc
Antwort3
Die Verwendung find
ist wahrscheinlich die beste Wahl. Einige der Probleme mit den anderen Antworten bestehen darin, dass entweder nicht alles im Verzeichnis gelöscht wird oder das Verzeichnis selbst gelöscht wird. Sie können entweder ls
mit verwenden xargs
, wenn keine Sonderzeichen vorhanden sind, oder find
mit bestimmten Optionen.
ls -1 | xargs rm -r
oder
find . -depth -path ./.* -prune -o -not -name . -delete
Dadurch wird alles im aktuellen Verzeichnis ignoriert, was mit .
( -prune
) beginnt, und alle anderen Dateien oder Verzeichnisse werden entfernt, sofern es sich nicht um das oberste Verzeichnis ( .
) handelt. Es -depth
wird zuerst in den Verzeichnissen gesucht, wodurch ein Fehler „Verzeichnis nicht leer“ vermieden wird. Wenn das -not
Argument auf Ihrem System nicht verfügbar ist, verwenden Sie !
.