GNU/Linux >> Znalost Linux >  >> Linux

Smazat všechny soubory ve složce kromě posledních (nejnovějších) 20?

Tato otázka zde již obsahuje odpovědi :odstranit nejstarší soubory

(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

Linux
  1. Jak odebrat všechny soubory ve složce kromě jednoho konkrétního souboru v systému Linux

  2. Tisknout všechny soubory ve složce?

  3. Jak odstranit všechny soubory kromě jednoho pojmenovaného souboru z konkrétní složky?

  1. Jak najít všechny řídké soubory v Linuxu

  2. Jak odstranit všechny soubory ve složce, ale nesmazat složku pomocí standardních knihoven NIX?

  3. Smazat celý /var/log?

  1. 3 způsoby, jak odstranit všechny soubory v adresáři kromě jednoho nebo několika souborů s příponami

  2. Sed:Smazat všechny výskyty řetězce kromě prvního?

  3. Smazat všechny soubory kromě určitého podadresáře pomocí funkce Najít?