Tengo un directorio con archivos .MP3 que me gustaría cambiar las extensiones 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 a mv
y un sed
comando con -exec
in find
.
¿Necesitaría un script bash para esto?
En zsh:
Para cuidar
.Mp3
o.mP3
archivar también:fuente
Podrías usar el comando rename (cuidado, hay dos implementaciones principales con diferentes API) para esos. Por ejemplo, para cambiar el caso de las extensiones de nombre de archivo de arriba a abajo, intente esto:
con
rename
fromutil-linux
(a veces llamadorename.ul
), suponiendo que.JPG
ocurra solo una vez en los nombres de archivocon
rename
fromperl
(a veces llamadoprename
; se han publicado varias variantes):Aquí hay algunos tutoriales sobre cómo pasó de un script de bash desordenado a este simple comando para su caso de uso.
Otro comando elegante para hacer esto es
pax
. Si está utilizando ZSH para su shell, también podría usarlozmv
.fuente
syntax error at (user-supplied code), near "."
cuando ejecuto este comando.Utilice perl-rename , navaja suiza de cambio de nombre de archivo con expresiones regulares (en ubuntu, esto se incluye con el paquete perl como nombre previo):
Si eres del tipo cuidadoso, usa las opciones -n y -v para cambiar el nombre de Perl y ver qué hará realmente.
fuente
Necesita un script, porque las "extensiones" en Linux son en realidad solo partes de la cadena del nombre del archivo. Tienes que hacer alguna manipulación de cadenas en el script para obtener el nuevo nombre.
Las comillas dobles son importantes si tiene nombres de archivo con espacios en blanco. Pensé que algunas de las comillas dobles eran un poco inocuas.
fuente
En bash:
fuente
primero haga una copia de seguridad de sus archivos! puedes usar una línea de Python:
EDITAR:
Aquí hay una explicación detallada de cómo funciona realmente el one-liner. Usando
python -c
estamos pasando un comando al intérprete de Python. Después de importar las bibliotecasos
para larename
función yglob
para la lista de archivos, necesitamos iterar a través de la lista de archivos en el directorio dado, que llaméPATH_TO_YOUR_DIRECTORY
, por ejemplo, algo así como./*
para todo en el directorio actual.Desafortunadamente, en la sintaxis de una línea, los
for
bucles no funcionan después de laimport
notación, por lo que debemos usar la notación de corchetes. Es decir, por cada archivo o nombre de directorio queglob
nos proporciona desde la ruta dada en forma de cadena, reemplazamos * .MP3 por * .mp3.Como OP no mencionó la búsqueda recursiva, no la incluí en primer lugar.
fuente