Entfernen Sie viele, viele, viele Dateien aus einem Ordner

Entfernen Sie viele, viele, viele Dateien aus einem Ordner

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 findvom 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 findist 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 lsmit verwenden xargs, wenn keine Sonderzeichen vorhanden sind, oder findmit 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 -depthwird zuerst in den Verzeichnissen gesucht, wodurch ein Fehler „Verzeichnis nicht leer“ vermieden wird. Wenn das -notArgument auf Ihrem System nicht verfügbar ist, verwenden Sie !.

verwandte Informationen