GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo limpiar las extensiones de archivo?

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


Linux
  1. ¿Cómo cambiar el nombre de un archivo en Linux?

  2. ¿Cómo hacer que el archivo sea disperso?

  3. ¿Cómo agrego texto a un archivo?

  4. Cómo grep \n en el archivo

  5. ¿Cómo copiar un archivo transaccionalmente?

Cómo crear un archivo Tar Gz

Cómo descomprimir (abrir) un archivo Gz

Cómo tar tipos de archivos específicos (extensiones) en un directorio

Cómo vincular un archivo en Linux

Cómo hacer eco en un archivo

Cómo limpiar archivos innecesarios