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_dirla tua directory (sostituiscila con la tua)-mtime +10più vecchio di 10 giorni-type fsolo file-deletenessuna sorpresa. Rimuovilo per testare il tuofindfilter 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 -telenca 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 ditailperché non riesco mai a ricordare se ho bisogno ditail -n +10otail -n +11.xargs -d '\n' rmraccoglie ogni riga di input (senza il carattere di fine riga) e passa ogni riga come argomento arm.
Come con qualsiasi cosa di questo tipo, prova in un posto sicuro.