PDA

View Full Version : Una cortesia su script Bash Linux


IspiCiosa
07-06-2007, 18:50
ragazzi ho il seguente comando:

rm -rf $(find -ctime +20 -name *.jpg)

pero mi lascia le cartelle vuote come posso fare per cancellare anche quelle???

andbin
07-06-2007, 19:48
rm -rf $(find -ctime +20 -name *.jpg)

pero mi lascia le cartelle vuote come posso fare per cancellare anche quelle???Prova con questo:

rm -rf $(find -ctime +20 -name \*.jpg -o -type d -empty)

In pratica cerca tutti i file .jpg modificati più di 20 giorni fa oppure tutte le directory vuote.

IspiCiosa
08-06-2007, 12:39
cia grazie mille ma ce solo una cosa che non va bene...

non deve calncellare i file jpeg o le directory vuote

ma deve fare entrambi cioè prima cancella i file jpeg e poi cancella le directory vuote

andbin
08-06-2007, 14:22
non deve calncellare i file jpeg o le directory vuote

ma deve fare entrambi cioè prima cancella i file jpeg e poi cancella le directory vuoteUhm ... allora no, non credo che si possa fare con 1 solo comando find. Come puoi immaginare, le opzioni che passi a find sono dei "filtri", cioè dei test che lui deve fare per stabilire cosa prendere in considerazione o no. E questo viene fatto per ogni singolo elemento del file-system. find scansiona il file-system e dice: questo lo prendo o no? E basta.

Potresti fare 2 find, tra l'altro per come lo fai adesso, dal find ottieni una bella stringona di output con tutti i path da eliminare da passare a rm. Non è il massimo .... si può però dire a find di eseguire qualcosa:

find -ctime +20 -name \*.jpg -exec rm -f {} \;
find -type d -empty -exec rm -rf {} \;