Ich habe ein Protokolldateiverzeichnis mit 82000 Dateien und Verzeichnissen (ungefähr die Hälfte und die Hälfte).
Ich muss alle Dateien und Verzeichnisse löschen, die älter als 3 Tage sind.
In einem Verzeichnis mit 37000 Dateien konnte ich dies tun mit:
find * -mtime +3 -exec rm {} \;
Aber mit 82000 Dateien / Verzeichnissen erhalte ich den Fehler:
/ usr / bin / find: Argumentliste zu lang
Wie kann ich diesen Fehler umgehen, damit ich alle Dateien / Verzeichnisse löschen kann, die älter als 3 Tage sind?
linux
file-io
resource-cleanup
Edward Tanguay
quelle
quelle
find -mtime +3 -exec rm {} +
?find * -mtime +3 |xargs rm
würde dieses Problem lösen.find *
.find .
ist besser. Das Shell-Globing erweitert das*
auf eine riesige Liste von Dateien und Verzeichnissen.Antworten:
So löschen Sie alle Dateien und Verzeichnisse im aktuellen Verzeichnis:
Oder alternativ mehr im Einklang mit dem ursprünglichen Befehl des OP:
quelle
--
nach rm hinzufügen , wiefind . -mtime +3 -exec rm -- {} \;
--
ist.Kann auch verwenden:
Zielverzeichnis nicht löschen
quelle
Eine andere Lösung für die ursprüngliche Frage, insb. nützlich, wenn Sie nur einige der älteren Dateien in einem Ordner entfernen möchten, wäre Folgendes:
und so weiter .. Zitate blockieren Shell-Platzhalter, sodass Sie Millionen von Dateien "finden" können :)
quelle