Questo script deve fare una cosa semplice: eliminare tutti i file jpg nella cartella di lavoro e nelle sue sottocartelle. Allora ho scritto una cosa del genere:
for IMMAGINI in $(ls -b *jpg) $(ls -b */*jpg); do rm $IMMAGINI ; done
E per quanto funzioni per tutti i file senza spazi nel nome, appena ne incontra uno che invece ne ha, il comando rm da errore. Ad esempio tra tutti i file che devo eliminare c'è un file che si chiama "save the cheerleader.jpg" e appena mando quel comando, ottengo un errore di rm:
Codice: Seleziona tutto
rm: impossibile rimuovere "save\\": File o directory non esistente
rm: impossibile rimuovere "the\\": File o directory non esistente
rm: impossibile rimuovere "cheerleader.jpg": File o directory non esistente
IMG="save\ the\ cheerleader.jpg"
con
rm $IMG
ottengo lo stesso identico errore, mentre con
rm save\ the\ cheerleader.jpg
che dovrebbe essere identico, tutto va a buon fine.
Cosa sbaglio?
P.s. ho già provato a togliere l'opzione -b dal comando ls, e ottengo solo un errore diverso:
Codice: Seleziona tutto
rm: impossibile rimuovere "save": File o directory non esistente
rm: impossibile rimuovere "the": File o directory non esistente
rm: impossibile rimuovere "cheerleader.jpg": File o directory non esistente

