Tengo directorios con archivos .MP3 cuyas extensiones me gustaría cambiar a .mp3. ¿Cuál es la forma más fácil de hacer esto? Estoy pensando en algo como:
find /RootPath -type f -iname "*.mp3" -exec mv {} sed s/.*MP3/1.mp3/ ;
… aunque sé que eso no está del todo bien. 🙂 La sustitución no es correcta y no estoy seguro de cómo usar ambos mv
y un sed
comando con -exec
en find
.
¿Necesitaría un script bash para esto?
Respuesta aceptada:
Aquí hay una forma de hacer esto en Bash:
for i in *; do [ "${i/%MP3/mp3}" != "$i" ] && echo "$i" "${i/%MP3/mp3}"; done
He usado echo
aquí para que el comando en sí no haga nada más que imprimir pares de nombres de archivos. Si esa lista representa los cambios que desea realizar, puede cambiar echo
a algo como mv -i --
que luego moverá sus archivos (y le avisará antes de sobrescribirlos).
Breve explicación:
El for
itera a través de cada archivo que coincida con *
. Luego, determinamos si la extensión ya está en minúsculas, si lo está, avanzamos, si no lo está, procedemos a moverlo (o repetirlo, según sea el caso). Esto utiliza las operaciones de cadena integradas de Bash sobre las que puede leer aquí:http://tldp.org/LDP/abs/html/string-manipulation.html