[Primipassi] Cancellare i file per data

Daniele Masini d.masini@tiscali.it
Mar 29 Mar 2005 09:43:42 CEST


Alcuni partecipanti al corso su GNU/Linux che il FLUG sta tenendo in 
questo periodo a Firenze, durante la lezione sulla shell, hanno 
richiesto il comando per cancellare da una directory i file con una 
determinata data.
Di seguito riporto i comandi che possono funzionare allo scopo.

Ad esempio, il seguente comando consente di ottenere l'elenco dei nomi 
dei file la cui ultima modifica è stata effettuata il giorno 29 Marzo 2005

ls -l --time-style=+%Y-%m-%d | grep 2005-03-29 | cut -d ' ' -f 8

Quindi l'espressione seguente consente di cancellarli

rm `ls -l --time-style=+%Y-%m-%d | grep 2005-03-29 | cut -d ' ' -f 8`

Il comando successivo consente di ottenere l'elenco dei nomi dei file la 
cui ultima modifica è stata effettuata il giorno corrente

ls -l --time-style=+%Y-%m-%d | grep `date +%Y-%m-%d` | cut -d ' ' -f 8

Quindi l'espressione seguente consente di cancellarli

rm `ls -l --time-style=+%Y-%m-%d | grep \`date +%Y-%m-%d\` | cut -d ' ' 
-f 8`

Attenzione agli apici: ' è l'apice normale (apostrofo), mentre ` è 
l'apice inverso, che su GNU/Linux è possibile ottenerlo con la 
combinazione di tasti Alt + '

La speigazione di massima è che il comando ls -l serve per ottenere 
l'elenco dei file della directory corrente nel formato lungo, in maniera 
che vengano visualizzate anche le date e l'opzione --time-style indica 
di utilizzare un formato specifico per la visualizzazione della data 
(YYYY-MM-DD). Il comando grep serve per estrarre dall'elenco soltanto le 
righe che contengono una data specifica e cut serve per prelevare 
soltanto i nomi dei file dall'elenco precedentemente filtrato.
Per i dettagli realativi ai comandi (ls, grep, cut, date) si rimanda 
alle relative man page.

Saluti,

Daniele



Maggiori informazioni sulla lista primipassi