Newsgroup: it.comp.os.linux.iniziare
Titolo: Cancellare tutti i files più vecchi o recenti di una certa data

Ciao,
c'è un comando (o un breve script) con cui potrei cancellare tutti i
files e le directories presenti in una data directory, aventi data
precendente oppure successiva ad una certa data? Grazie, ciao,
deltaquattro

 precendente oppure successiva ad una certa data?
find dir -mtime -2 -exec rm {} \;  # leggi bne man find prima di provarci
-- 
Maurizio Loreti                         
http://www.pd.infn.it/~loreti/mlo.html
Dept. of Physics, Univ. of Padova, Italy              ROT13: 
ybe...@cq.vasa.vg

 precendente oppure successiva ad una certa data? Grazie, ciao,
man  find 
crf: -mtime, -exec,-newer.. etcetc.

 wrote:

Ciao,
grazie per la risposta: avevo già letto il man di find, ma facendo
delle prove ho ottenuto risultati strani. P.es.
find . -mtime -7 -exec ls -alt {} \; | more
mi trova tutti i files della directory, compresi dei files del 2007.
Allo stesso modo, se provo
find . -newer OUT -exec ls -alt {} \; | more # OUT è un file presente
nella directory in cui sto lavorando
trova tutti i files della directory, non solo quelli successivi ad
OUT. Inoltre, se voglio identificare i file *precedenti* ad una certa
data, come faccio? -atime, -ctime, -mtime e -newer trovano tutti files
successivi ad una certa data. Grazie,
ciao,
deltaquattro

 tutti files successivi ad una certa data. Grazie,
Forse tmpwatch (non so se e` compreso in tutte le distro) ti risolve
il problema. Solitamente non e` usabile da utente normale, ma da
root. Usa man per vedere se e` installato.
-- 
--> x3m <--

 mi trova tutti i files della directory, compresi dei files del 2007.
E' giusto. (a proposito, stai usando mtime e non ctime, spero tu sappia
la differenza)
fai questa prova:
find . -mtime -7 -print
E scopri che il risultato comprende anche la directory stessa ( . )
Cosi', ls si vede una cosa del genere:
ls -alt . pippo pluto
e ti restituisce l'insieme minimo che comprende i parametri, peccato
che ls . comprende tutto.
Scrivila cosi':
find . -mtime -7 -type f -exec ls -alt {} \; | more
-- 
           |Save our planet!
    Ciao   |Save wildlife!
   roberto |For your E-MAIL use ONLY recycled Bytes  !!
           |roberto poggi   
rpo...@softhome.net

 find . -mtime -7 -type f -exec ls -alt {} \; | more
Ok, grazie mille: ho trovato anche l'opzione maxdepth ed con
find . -mtime -8 -type f -maxdepth 1 -exec ls -lt {} \; | more
ottengo
-rw-r--r--  1 .. .. 9262 2008-01-31 17:05 ..
-rw-r--r--  1 .. .. 68153465 2008-01-30 16:21 ..
-rw-r--r--  1 .. .. 5952856 2008-01-30 14:02 ..
-rw-r--r--  1 .. .. 5952856 2008-01-30 14:20 ..
-rw-r--r--  1 .. .. 5952856 2008-01-30 14:21 ..
-rw-r--r--  1 .. .. 5952856 2008-01-30 14:01 ..
-rw-r--r--  1 .. .. 5952856 2008-01-30 14:22 ..
-rw-r--r--  1 .. .. 16 2008-01-31 17:18 ..
 che è giusto, anche se non capisco perchè non li mette nell'ordine
corrispondente alla data. Non c'è modo per identificare i file
*precedenti* ad una certa
data? tmpwatch non risulta installato. Si potrebbe fare con awk?
Grazie ancora,
ciao,
deltaquattro

 deltaquattro

 mi trova di nuovo tutti i files, e non ordinati per data.?
Non capisco.
test# find . -ctime -701 -type f -exec ls -alt {} \;
-rw-r--r--  1 poggir poggir 772 Mar  9  2007 ./gmer/index.html
-rw-r--r--  1 poggir poggir 905 Jan 31 19:54 ./prova
test# find . -ctime -70 -type f -exec ls -alt {} \;
-rw-r--r--  1 poggir poggir 905 Jan 31 19:54 ./prova
test# find . -ctime -7000 -type f -exec ls -alt {} \;
-rw-r--r--  1 poggir poggir 394372 Jan 30  2006 ./AntiVirus.zip
-rw-r--r--  1 poggir poggir 772 Mar  9  2007 ./gmer/index.html
-rw-r--r--  1 poggir poggir 905 Jan 31 19:54 ./prova
test# find . -ctime -7000 -type f -exec ls -altc {} \;
-rw-r--r--  1 poggir poggir 394372 Jan 30  2006 ./AntiVirus.zip
-rw-r--r--  1 poggir poggir 772 Aug 26 12:24 ./gmer/index.html
-rw-r--r--  1 poggir poggir 905 Jan 31 19:54 ./prova
proliant:/ulocal/poggir/test#
A me sembra che funzioni come da manuale.
Occhio, con tutte le opzioni di ls, prima cerchi i file per un certo 
tipo di data, ma poi glieli chiedi ordinati per l'altro. (vedi -altc
nell'ultimo esempio)


 nell'ultimo esempio)
Giusto, bisogna fare anche attenzione a questo, che casino :-) Cmq ora
mi è chiaro. Per "sdebitarmi" riporto lo script con cui sono riuscito
a risolvere l'altro problema, cioè cancellare i files precedenti ad
una certa data:
#!/bin/tcsh
# cancella i files precedenti o contemporanei alla data in input
# NOTA "'S1'" passa ad awk l'argomento dello script E specifica che
tale argomento va trattato come stringa
ls -l | awk '{if ($6<="'$1'") print $8}'>
cancella.dat
xargs rm -r < cancella.dat
\rm cancella.dat
Grazie ancora,
ciao,
deltaquattro

 data? tmpwatch non risulta installato. Si potrebbe fare con awk?
precedenti = -mtime +8
seguenti = -mtime -8
in quella data = -mtime 8
che poi non è in quella data, ma 8*24 ore fa. se vuoi trovare i file
modificati mercoledì scorso farai:
find . -daystart -mtime 8
non te li ordina perché find non li trova in ordine di time.