GNU/Linux >> Linux Esercitazione >  >> Linux

Eliminare tutti i file in una cartella tranne l'ultimo (più recente) 20?

Questa domanda ha già risposte qui :rimuovi i file più vecchi

(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

Linux
  1. Come rimuovere tutti i file in una cartella tranne un file specifico in Linux

  2. Sed:eliminare tutte le occorrenze di una stringa tranne la prima?

  3. Come eliminare tutti i file con un'estensione particolare in una cartella particolare?

  4. Eliminare i vecchi file di registro tranne l'ultimo (ordinato in ordine alfanumerico)?

  5. Sostituire tutte le nuove righe nello spazio tranne l'ultima?

Elimina tutti i file tranne che in una determinata sottodirectory con Trova?

Stampa tutti i file in una cartella?

Utilizzare Trova per trovare una determinata directory ed eliminare tutti i file in essa contenuti tranne una directory?

Come trovare tutti i file sparsi in Linux

Come eliminare tutti i file in una cartella, ma non eliminare la cartella utilizzando le librerie standard NIX?

Come eliminare tutti i file in una directory tranne alcuni?