PDA

Visualizza la versione completa : rm per data


sbn
11-10-2004, 10:29
Salve ragazzi,

mi dite, por favor, che comando devo usare per cancellare tutti i file con data 2002 e 2003 presenti in una directory?

grazie,
sbn

Ilmalcom
11-10-2004, 10:35
Dipende molto dall'output di ls -l non è che potresti incollarci una copia di esso eseguito all'interno di una directory che contenga file del 2002 o del 2003?

sbn
11-10-2004, 10:42
il problema è proprio estrarre tutti i files del 2002 e 2003 xè sono troppi per scriverli tutti a mano (sull'ordine delle centinaia x intenderci)... quindi copiarli usando cp (lista files) o cancellarli con rm (lista files) non fa differenza, se non ho capito male...

sbn
11-10-2004, 10:55
devo fare un file che contiene uno script?

sopadj1
11-10-2004, 10:56
sono, ancora x ora, ignorante x quando riguarda la programmazione pero' si potrebbe fare 1 cosa del genere

cancella.sh




#!/bin/bash



ls -l | grep $1 > file_da_cancellare

# ciclo che non so fare

for i in 'file_da_cancellare' exec rm -rf {} \;


rm file_da_cancellare



gli dai i permessi di esecuzione, e gli passi come argomento la data dei file che vuoi cancellare



lo so che ho scritto 1 gran cavolata ma penso che il ragionamento sia quello
:stordita:

Ilmalcom
11-10-2004, 11:23
Originariamente inviato da Ilmalcom
Dipende molto dall'output di ls -l non è che potresti incollarci una copia di esso eseguito all'interno di una directory che contenga file del 2002 o del 2003?
Sono costretto a quotarmi... Se mi fornisci l'output di una riga di ls -l di un file del 2002/2003 posso provare a fare lo script, se no ciccia :bhò:

sopadj, credo che tutti apprezzino lo sforzo, ma, senza offesa, forse è bene che studi un altro po' di bash scripting prima

sopadj1
11-10-2004, 11:32
Originariamente inviato da Ilmalcom
Sono costretto a quotarmi... Se mi fornisci l'output di una riga di ls -l di un file del 2002/2003 posso provare a fare lo script, se no ciccia :bhò:

sopadj, credo che tutti apprezzino lo sforzo, ma, senza offesa, forse è bene che studi un altro po' di bash scripting prima

:stordita: :cry:

cmq io dicevo il ragionamento....

Ilmalcom
11-10-2004, 11:34
Al momento mi viene in mente una soluzione del genere, anche se non è ottimale. Spero sia quello che cercavi.
L'autore declina ogni responsabilità, bla bla bla...



find /path/to/dir -mtime +300 > lista_files.txt


Con questa istruzione tutti i files che non sono stati modificati negli ultimi 300 giorni vengono outputtati nel file lista_files.txt, così puoi verificare quali sono prima di cancellarli e non rischi di rimuovere qualche file vitale.
Dopodichè, per cancellare tutti i files a partire dalla lista, puoi utilizzare quest'istruzione...



IFS="\n" for i in `cat lista_files.txt`; do rm -rf "$i"; done

sbn
11-10-2004, 11:43
eccoti una riga...

-rw-rw---- 1 zorro23 mail 4414 dic 5 2002 zorro23


GRAZIE 1000 X L'AIUTO!

sbn
11-10-2004, 12:11
scusa l'ignoranza in materia bash...ma questo comando:

IFS="\n" for i in `cat lista_files.txt`; do rm -rf "$i"; done

dà il seguente errore:

bash: syntax error near unexpected token `do'

....

Loading