Ho una directory con file .MP3 di cui vorrei cambiare le estensioni in .mp3. Qual è il modo più semplice per farlo? Penso qualcosa sulla falsariga di:
find /RootPath -type f -iname "*.mp3" -exec mv {} sed s/.*MP3/1.mp3/ ;
... anche se so che non è del tutto corretto. 🙂 La sostituzione non è corretta e non sono sicuro di come utilizzare sia un mv
e un sed
comando con -exec
in find
.
Avrei bisogno di uno script bash per questo?
Risposta accettata:
Ecco un modo per farlo in Bash:
for i in *; do [ "${i/%MP3/mp3}" != "$i" ] && echo "$i" "${i/%MP3/mp3}"; done
Ho usato echo
qui quindi il comando stesso non fa altro che stampare coppie di nomi di file. Se quell'elenco rappresenta le modifiche che desideri apportare, puoi modificare echo
a qualcosa come mv -i --
che quindi sposterà i tuoi file (e ti chiederà prima di sovrascrivere).
Breve spiegazione:
Il for
scorre ogni file corrispondente a *
. Quindi, determiniamo se l'estensione è già minuscola, se lo è andiamo avanti, se non lo è, procediamo a spostarla (o farla eco, a seconda dei casi). Questo utilizza le operazioni sulle stringhe integrate di Bash di cui puoi leggere qui:http://tldp.org/LDP/abs/html/string-manipulation.html