eliminazione file

Postate qui per tutte le discussioni legate a Linux in generale.

Moderatore: Staff

Regole del forum
1) Citare sempre la versione di Slackware usata, la versione del Kernel e magari anche la versione della libreria coinvolta. Questi dati aiutano le persone che possono rispondere.
2) Per evitare confusione prego inserire in questo forum solo topic che riguardano appunto Gnu/Linux in genere, se l'argomento è specifico alla Slackware usate uno dei forum Slackware o Slackware64.
3) Leggere attentamente le risposte ricevute
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Rispondi
leo410me
Linux 2.x
Linux 2.x
Messaggi: 331
Iscritto il: dom 10 apr 2005, 0:00

eliminazione file

Messaggio 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.

Avatar utente
masalapianta
Iper Master
Iper Master
Messaggi: 2775
Iscritto il: lun 25 lug 2005, 0:00
Nome Cognome: famoso porco
Kernel: uname -r
Desktop: awesome
Distribuzione: Debian
Località: Roma
Contatta:

Messaggio da masalapianta »

usa find con -exec (no, non ti dico come; man find)

leo410me
Linux 2.x
Linux 2.x
Messaggi: 331
Iscritto il: dom 10 apr 2005, 0:00

Messaggio 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'
????

Avatar utente
Paoletta
Staff
Staff
Messaggi: 3975
Iscritto il: lun 25 apr 2005, 0:00
Slackware: 14.2 - 64 bit
Desktop: fluxbox
Località: Varese

Messaggio 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

sunreal
Master
Master
Messaggi: 1599
Iscritto il: dom 10 apr 2005, 0:00
Slackware: 14.1
Desktop: kde
Località: P.P.P.

Messaggio 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.

Avatar utente
targzeta
Iper Master
Iper Master
Messaggi: 6643
Iscritto il: gio 3 nov 2005, 14:05
Nome Cognome: Emanuele Tomasi
Slackware: 64-current
Kernel: latest stable
Desktop: IceWM
Località: Carpignano Sal. (LE) <-> Pisa

Messaggio 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

sunreal
Master
Master
Messaggi: 1599
Iscritto il: dom 10 apr 2005, 0:00
Slackware: 14.1
Desktop: kde
Località: P.P.P.

Messaggio da sunreal »

Grazie mille spina..... vabbè anche Paoletta e masalapianta. Grazie

Rispondi