Pagina 1 di 1

eliminazione file

Inviato: lun 8 gen 2007, 0:17
da leo410me
Il mio problema è questo:
ho una directory con all'interno oltre a dei file altre directory che contengono a loro volta altri file ed altre directory etc etc...
All'interno di questo bell'alberello ho solo tre tipi di file, come posso eliminare in maniera ultra rapida due tipi di file per rimanere solo con quelli che mi interessano? È possibile? Grazie.

Inviato: lun 8 gen 2007, 4:57
da masalapianta
usa find con -exec (no, non ti dico come; man find)

Inviato: lun 8 gen 2007, 10:50
da leo410me
Mi sono messo alla lettura delle man econ il mio "fantastico" inglese ho partorito questo comando:

find /home/sly11/Desktop/nova -iwholename *.jpg -execdir -delete ;

il sistema mi ha risposto così:
find: The current directory is included in the PATH environment variable, which is insecure in combination with the -execdir action of find. Please remove the current directory from your $PATH (that is, remove "." or leading or trailing colons
mentre da root:
find: manca l'argomento di `-execdir'
????

Inviato: lun 8 gen 2007, 11:07
da Paoletta
1) non devi usare -execdir ma -exec...

2) se non quoti *.jpeg ci penserà la shell ad effettuare l'espansione dei caratteri; invece deve farlo find

Inviato: lun 8 gen 2007, 11:44
da sunreal
(Sono sempre io nel frattempo sono passato al portatile)
Paoletta ha scritto:1) non devi usare -execdir ma -exec...
Veramente dalle man pages credo di aver capito che execdir è più sicuro di exec e comunque avevo già provato senza risultato;
Paoletta ha scritto:2) se non quoti *.jpeg ci penserà la shell ad effettuare l'espansione dei caratteri; invece deve farlo find
Questa non l'ho proprio capita..... nel senso letterale della frase.

Inviato: lun 8 gen 2007, 12:22
da targzeta
Il comando è:

Codice: Seleziona tutto

find /home/sly11/Desktop/nova -name "*jpg" -delete
semplice ed efficace :).
Se hai anche un altro tipo oltre a jpg, supponiamo txt, il comando può essere:

Codice: Seleziona tutto

find /home/sly11/Desktop/nova \( -name "*jpg" -or -name "*txt" \) -delete
Te lo scrivo perchè non è sempre immediato capire il man di find ;)

Quando Paoletta parla di quotare, in senso shell del termine, si intende far si che un parametro non vengo espanso dalla shell.
Nell'ultimo comando che ti ho scritto ho usato due metodi di quotatura della shell bash.
1) \( o \) -> così indico alla bash che le parentesi tonde non le deve interpretare
2) "*jpg" -> anche in questo caso voglio che la bash mandi a find proprio *jpg.

In generale si quotano tutti quei simboli che hanno significato anche per la shell ed il programma find, come hai letto nel man accetta l'asterisco come parametro. Un esempio vale mille parole. Vai in una directory che contiene file jpg ed esegui:

Codice: Seleziona tutto

echo find . *jpg
poi esegui

Codice: Seleziona tutto

echo find . "*jpg"
vedrai la differenza :).

Se vuoi sapere meglio che succede non hai che da chiedere, non lo scrivo solo per non essere troppo prolisso.

Spina

Inviato: lun 8 gen 2007, 15:26
da sunreal
Grazie mille spina..... vabbè anche Paoletta e masalapianta. Grazie