(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