Tato otázka zde již obsahuje odpovědi :odstranit nejstarší soubory
(8 odpovědí)
Uzavřeno před 5 lety.
Linux
(8 odpovědí)
Uzavřeno před 5 lety.
Chci odstranit všechny soubory z různých adresářů a chci si ponechat pouze nejnovější soubory 20 souborů.
je toto správný příkaz?
ls -t1 /mnt/dwh/ftp/dwh_ftp_cbs/ARLOGS/ | tail -n +22 | xargs rm -f
Přijatá odpověď:
Pomocí zsh
a glob-kvalifikátory:
print -rl -- *(D.Om[1,-21])
zobrazí seznam všech běžných souborů kromě posledních (naposledy upravených) dvaceti.D
vybere skryté soubory, .
vybere pouze běžné soubory, Om
znamená obrácené řazení podle mtime (takže nejstarší jako první) a [1,-21]
vybírá od prvního po 21. až po poslední.
Pokud jste s výsledkem spokojeni, nahraďte print -rl
pomocí rm
:
rm -- *(D.Om[1,-21])
Pokud máte velké množství souborů, možná budete muset použít zargs
abyste zabránili příliš dlouhému seznamu argumentů :
autoload zargs
zargs ./*(D.Om[1,-21]) -- rm
Počet řádků vydaných Ls?
Jak vyloučit příkaz ze seznamu historie, ale ponechat jej v „živé“ historii?