Yo uso rename
todo el tiempo. Es bastante simple, pero espero que conozcas expresiones regulares básicas:
rename "s/SEARCH/REPLACE/g" *
Esto reemplazará la cadena SEARCH
con REPLACE
en cada archivo (es decir, *
). El /g
medio global, por lo que si tuviera un SEARCH_SEARCH.jpg
, sería renombrado REPLACE_REPLACE.jpg
. Si no lo hubiera hecho /g
, solo habría hecho una sustitución una vez y, por lo tanto, ahora se nombraría REPLACE_SEARCH.jpg
. Si desea no distinguir entre mayúsculas y minúsculas, agregue /i
(eso sería, /gi
o /ig
al final).
Con expresiones regulares, puedes hacer mucho más.
Tenga en cuenta que este rename
es el comando prename
(también conocido como Perl rename
), que admite expresiones regulares completas de Perl. Hay otro rename
que usa patrones y no es tan poderoso. prename
solía instalarse de manera predeterminada en Ubuntu (junto con Perl), pero ahora puede que tenga que hacer:
sudo apt install rename
Aquí están algunos ejemplos:
Prefijo
Añadir :
rename 's/^/MyPrefix_/' *
document.pdf
renombrado a MyPrefix_document.pdf
Eliminar :
También puede eliminar cadenas no deseadas. Supongamos que tiene 20 archivos MP3 con el nombre Me gusta CD RIP 01 Song.mp3
y desea eliminar la parte "RIP CD" y desea eliminarlos de todos ellos con un solo comando.
rename 's/^CD RIP //' *
CD RIP 01 Song.mp3
a 01 Song.mp3
Observe el espacio extra en '^CD RIP '
, sin el espacio todos los archivos tendrían un espacio como primer carácter del archivo. También tenga en cuenta que esto funcionará sin el ^
carácter, pero coincidiría CD RIP
en cualquier parte del nombre de archivo. Las ^
garantías solo eliminan los caracteres si son el comienzo del archivo.
Sufijo
Añadir :
rename 's/$/_MySuffix/' *
document.pdf
renombrado a document.pdf_MySuffix
Cambio :
rename 's/\.pdf$/.doc/' *
cambiará Something.pdf
a Something.doc
. (La razón de la barra diagonal inversa es que .
es un carácter comodín en regexp, por lo que .pdf
coincide, qPDF
mientras que \.pdf
solo coincide con la cadena exacta .pdf
. También es muy importante tener en cuenta que si no está familiarizado con BASH, debe colocar barras diagonales inversas entre comillas. ¡No puede omitir comillas! o utilice comillas dobles, o bash intentará traducirlas. Para bash \.
e "\."
iguales .
. (Pero se utilizan comillas dobles y barras invertidas, por ejemplo, "\ n" para una nueva línea, pero como "\."
no es una secuencia de escape posterior válida, se traduce en .
)
En realidad, incluso puede encerrar las partes de la cadena entre comillas en lugar de todo: 's/Search/Replace/g'
es lo mismo que s/'Search'/'Replace'/g
y s/Search/Replace/g
para BASH. Solo debes tener cuidado con los caracteres especiales (y espacios).
Sugiero usar la -n
opción cuando no estés seguro de que tienes las expresiones regulares correctas. Muestra lo que sería renombrado, luego sale sin hacerlo. Por ejemplo:
rename -n s/'One'/'Two'/g *
Esto enumerará todos los cambios que habría realizado, si no hubiera puesto la -n
bandera allí. Si se ve bien, presione Uppara regresar, luego borre -n
y presione Enter(o reemplácelo -v
para generar todos los cambios que realice).
Nota : las versiones de Ubuntu anteriores a la 17.04 no se envían rename
de manera predeterminada, sin embargo, todavía está disponible en los repositorios. Use sudo apt install rename
para instalarlo