(8 Antworten)
Vor 5 Jahren geschlossen.
Ich möchte alle Dateien aus verschiedenen Verzeichnissen entfernen und nur die neuesten 20 Dateien behalten.
Ist dies der richtige Befehl dafür?
ls -t1 /mnt/dwh/ftp/dwh_ftp_cbs/ARLOGS/ | tail -n +22 | xargs rm -f
Akzeptierte Antwort:
Mit zsh
und Glob-Qualifizierer:
print -rl -- *(D.Om[1,-21])
listet alle regulären Dateien außer den letzten (zuletzt geänderten) zwanzig auf.D
wählt versteckte Dateien aus, .
wählt nur normale Dateien aus, Om
bedeutet umgekehrte Sortierung nach mtime (also älteste zuerst) und [1,-21]
wählt vom ersten bis zum einundzwanzigsten aus.
Wenn Sie mit dem Ergebnis zufrieden sind, ersetzen Sie print -rl
mit rm
:
rm -- *(D.Om[1,-21])
Wenn Sie eine große Anzahl von Dateien haben, müssen Sie möglicherweise zargs
verwenden um zu lange Argumentliste zu vermeiden :
autoload zargs
zargs ./*(D.Om[1,-21]) -- rm