Ich muss 200 000 Dateien (alle) aus einem Ordner entfernen und möchte den Ordner selbst nicht löschen.
Mit rm erhalte ich den Fehler "Argumentliste zu lang". Ich habe versucht, etwas mit xargs zu machen, aber ich bin kein Shell-Typ, deshalb funktioniert es nicht:
find -name * | xargs rm -f
Antworten:
quelle
-delete
. Dies vermeidet auch Probleme mit Dateien, die Anführungszeichen oder Zeilenumbrüche enthalten (obwohl Sie-print0
die-0
Optionen von GNU find und GNU xarg verwenden könnten, um dies zu beheben).xargs
mittlerweilefind
hat-exec command {} +
Syntax.Sie machen alles richtig. Es ist das '*' , das Ihnen ein Problem bereitet (die Shell erweitert es in eine Liste von Dateien anstelle von
find
). Die richtige Syntax könnte sein:(Letzteres ist etwas weniger effizient, da es längere Namen
xargs
übergibt, aber Sie werden es kaum bemerken :-))Alternativ kannst du dein '*' auch so umgehen (aber in diesem Fall wird auch versucht, "." Und ".." zu entfernen; es ist kein großes Problem - du bekommst nur eine kleine Warnung :-)):
Wenn Ihre Dateinamen Leerzeichen enthalten, verwenden Sie Folgendes:
quelle
Der folgende Befehl löscht alle Dateien aus dem aktuellen Verzeichnis:
quelle
-name '*'
bedeutet nicht "alle Dateien". Akten sind zu-type f
Du kannst es versuchen
oder
quelle
Ein großes Lob an die Quanten antworten, hier sind einige Ergänzungen.
Wenn Sie Dateien mit einem bestimmten Namensmuster löschen möchten, können Sie es so schreiben. Außerdem wurde -print hinzugefügt, damit Sie sehen können, was passiert, wenn die Dateien gelöscht werden.
Dies löscht zum Beispiel alle JPEGs in meinem Verzeichnis.
quelle