(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