Debianizzati.Org | Forum | Blog | Guide | IRC
 
 
Forum Italiano Debian - Debianizzati.Org
Dicembre 05, 2008, 05:08:20 am *
Benvenuto! Accedi o registrati.
Hai dimenticato l'e-mail di attivazione?

Accesso con nome utente, password e durata della sessione
Notizia:
 
   Indice   Aiuto Ricerca Agenda Accedi Registrati  
Pagine: [1]   Vai giù
  Stampa  
Autore Discussione: [risolto]: Bash: script di cancellazione selettiva (l'analisi è dubbia, la codifica di più)  (Letto 551 volte)
0 utenti e 1 Utente non registrato stanno visualizzando questa discussione.
loerian
Full Member
***

Karma: +0/-0
Scollegato Scollegato

Messaggi: 135



Mostra profilo
« inserita:: Maggio 23, 2008, 11:56:57 pm »

Ciao
vorrei qualche consiglio su come muovermi per uno script Bash che non dovrebbe essere ne lungo e neppure complesso.
Però vorrei che lavorasse su molti file...
Deve cercare file di una data estensione e con un tempo di ultimo accesso superiore a tot giorni in una directory fissata, al più ci vorrebbe una ricerca ricorsiva ma non è importante, specie se diventa una elaborazione pesante.

Io ho pensato di usare find, ma una sintassi ingenua come
Codice:
find qualcosa/*.gif -atime +30 -delete
su 104 nomi di file mi segnala che il numero degli argomenti è eccessivo.
Immagino ci sia differenza fra "cerca i file con un nome così e dopo che li hai trovati cancellali" e "cerca i file con un nome così cancellando quando ne trovi qualcuno". Ovvero l'espressione -delete è molto diversa da -exec rm, no? Se cio è corretto, su grandi elenchi un processo figlio rm potrebbe essere determinante per la riuscita.
Siccome pensavo anche che per lavorare su un numero di file dell'ordine di 106 l'unica potrebbe essere creare un txt di appoggio, sono un po' indeciso. Non posso fare molte prove su queste "distanze" e non vorrei imparare esclusivamente da dei tentativi rozzi. Non saprei ancora come far cancellare da un elenco su file.
Pensavo anche che, poiché i file hanno nomi casuali, avrei potuto abbattere la lunghezza dell'elenco di qualche x100 con dei cicli annidati, del tipo:
Codice:
for indice in [elenco caratteri]
Però immagino che ci sia anche un modo per non dovere elencare tassonomicamente l'escursione dell'indice. Ne avete idea?
Cmq a prescindere dalla sintassi conveniente, credo che di fondo sia necessario scrivere man mano un elenco parziale dei risultati della ricerca, poi cancellare ecc..

Spero che abbiate qualche suggerimento. Indicativamente come si possono cancellare dei file il cui percorso e scritto in un file?
"lo si legge per righe, si testa se la riga è un percorso e poi si cancella il file con quel percorso" ehm ... rolleyes


ps. almeno per ora dei soft link non me frega grin
« Ultima modifica: Maggio 24, 2008, 10:52:09 pm da dariodeb » Registrato
Finn
Global Moderator
Hero Member
*****

Karma: +31/-6
Scollegato Scollegato

Messaggi: 1199


207002659
Mostra profilo
« Risposta #1 inserita:: Maggio 24, 2008, 12:37:06 pm »

qualcosa tipo:

Codice:
find qualcosa/ -iname *.gif -atime +30 -delete
?

Come parametro di -iname puoi mettere un'espressione regolare, basta stare attenti al quoting.

My 0.02€

Registrato
loerian
Full Member
***

Karma: +0/-0
Scollegato Scollegato

Messaggi: 135



Mostra profilo
« Risposta #2 inserita:: Maggio 24, 2008, 06:54:52 pm »

qualcosa tipo:

Codice:
find qualcosa/ -iname *.gif -atime +30 -delete
?

Come parametro di -iname puoi mettere un'espressione regolare, basta stare attenti al quoting.

My 0.02€



Se intendi anche dire che specificando la ricerca tramite -iname, piuttosto che basarsi su percorso e wildcard, sia fondamentale per lavorare su grandi quantità di file ... allora il tuo consiglio vale più di 2centesimi  smiley
Vedrò anche se non è meglio -exec rm {qualcosa}
Grazie Finn
Registrato
loerian
Full Member
***

Karma: +0/-0
Scollegato Scollegato

Messaggi: 135



Mostra profilo
« Risposta #3 inserita:: Maggio 24, 2008, 10:50:52 pm »

Ho aggiunto [Risolto] perché ho visto che il semplice comando:
Codice:
find -atime +30 -delete
nella directory di test ha funzionato.
In questo modo credo che non debba espandere un elenco. Per lo meno ho constatato anche che ha scovato e cancellato 100.000 file senza fare una piega. Diversamente da find *.gif -atime 30 -delete che ho provato all'inizio.
Direi che va bene.

@Finn
alle espressioni regolari non ho proprio badato perché non credevo potesse essere utile per nomi definiti da stringhe di numeri a caso. Mi premurerò di impararne presto qualcosa. Di certo il test -iname che suggerisci migliora le cose.

Grazie  smiley
« Ultima modifica: Maggio 24, 2008, 11:22:45 pm da dariodeb » Registrato
Finn
Global Moderator
Hero Member
*****

Karma: +31/-6
Scollegato Scollegato

Messaggi: 1199


207002659
Mostra profilo
« Risposta #4 inserita:: Maggio 25, 2008, 11:50:43 am »

Non conoscendo il contenuto della directory ho pensato volessi applicare il comando solo ai .gif
In generale, comunque è meglio far trovare a find i file su cui operare.. una buona espressione regolare (anche solo .*\.gif) aiuta molto.
Registrato
Pagine: [1]   Vai su
  Stampa  
 
Vai a:  

Altri Topic Correlati
Oggetto Aperta da Risposte Visite Ultimo messaggio
[BASH] script connesione help! Scripting AcidRicky 6 991 Ultimo messaggio Novembre 25, 2005, 06:38:40 pm
da AcidRicky
[BASH] Script per spegnere in automatico il computer. Scripting « 1 2 » perseus 15 2808 Ultimo messaggio Aprile 11, 2006, 06:36:02 pm
da The_Noise
[BASH] Script per l\'accesso locale Scripting balubeto 5 790 Ultimo messaggio Agosto 23, 2006, 01:10:25 am
da metaldaze
[risolto] script backup rsync - bash Generale Nokao 5 511 Ultimo messaggio Febbraio 06, 2007, 08:04:35 pm
da Nokao
[Script Bash] per runnare file C Scripting cs_cruzeiro 4 606 Ultimo messaggio Ottobre 02, 2007, 01:25:16 am
da cs_cruzeiro
Powered by MySQL Powered by PHP Powered by SMF 1.1.7 | SMF © 2006-2008, Simple Machines LLC XHTML 1.0 valido! CSS valido!
Pagina creata in 0.083 secondi con 21 interrogazioni al database.