GNU/Linux >> Linux Esercitazione >  >> Linux

Script di shell per contare i file, quindi rimuovere i file più vecchi

Assicurati che il tuo pwd sia la directory corretta per eliminare i file quindi (assumendo solo caratteri regolari nel nome del file):

ls -A1t | tail -n +11 | xargs rm

mantiene i 10 file più recenti. Lo uso con il programma della fotocamera "motion" per conservare i file di cattura dei fotogrammi più recenti. Grazie a tutte le risposte successive perché mi hai mostrato come farlo.


find è lo strumento comune per questo tipo di attività :

find ./my_dir -mtime +10 -type f -delete

SPIEGAZIONI

  • ./my_dir la tua directory (sostituiscila con la tua)
  • -mtime +10 più vecchio di 10 giorni
  • -type f solo file
  • -delete nessuna sorpresa. Rimuovilo per testare il tuo find filter prima di eseguire l'intero comando

E fai attenzione a quel ./my_dir esiste per evitare brutte sorprese !


Il modo corretto per fare questo tipo di cose è con logrotate .


Prova questo:

ls -t | sed -e '1,10d' | xargs -d '\n' rm

Questo dovrebbe gestire tutti i caratteri (tranne le nuove righe) in un nome di file.

Cosa sta succedendo qui?

  • ls -t elenca tutti i file nella directory corrente in ordine decrescente di tempo di modifica. Cioè, i file modificati più di recente sono i primi, un nome file per riga.
  • sed -e '1,10d' cancella le prime 10 righe, cioè i 10 file più recenti. Uso questo invece di tail perché non riesco mai a ricordare se ho bisogno di tail -n +10 o tail -n +11 .
  • xargs -d '\n' rm raccoglie ogni riga di input (senza il carattere di fine riga) e passa ogni riga come argomento a rm .

Come con qualsiasi cosa di questo tipo, prova in un posto sicuro.


Linux
  1. Come ottenere il nome della distribuzione e il numero di versione in un semplice script di shell?

  2. Come si ftp e si scaricano file da uno script di shell UNIX

  3. Shell Script per stampare la piramide di stelle

  4. Esecuzione di script di shell in parallelo

  5. Directory corrente dello script Shell?

Determinare la shell nello script durante il runtime?

Script Shell per spostare i file più vecchi?

Determinazione del percorso per lo script della shell di origine?

Come eseguire un comando in uno script della shell?

Esiste un programma/script per modificare i file .conf?

Script Bash per rimuovere il file più vecchio da una cartella