(8 risposte)
Chiuso 5 anni fa.
Voglio rimuovere tutti i file da directory diverse e voglio mantenere solo i file più recenti 20 file.
è questo il comando corretto per farlo?
ls -t1 /mnt/dwh/ftp/dwh_ftp_cbs/ARLOGS/ | tail -n +22 | xargs rm -f
Risposta accettata:
Con zsh e glob-qualificatori:
print -rl -- *(D.Om[1,-21])
elencherà tutti i file normali tranne gli ultimi venti (modificati più di recente).D seleziona i file nascosti, . seleziona solo file regolari, Om significa ordinamento inverso per mtime (quindi prima il più vecchio) e [1,-21] seleziona dal primo al 21° fino all'ultimo.
Se sei soddisfatto del risultato, sostituisci print -rl con rm :
rm -- *(D.Om[1,-21])
Se hai un numero enorme di file potresti dover usare zargs per evitare elenco di argomenti troppo lungo :
autoload zargs
zargs ./*(D.Om[1,-21]) -- rm