Yo uso renametodo el tiempo. Es bastante simple, pero espero que conozcas expresiones regulares básicas:
rename "s/SEARCH/REPLACE/g" *
Esto reemplazará la cadena SEARCHcon REPLACEen cada archivo (es decir, *). El /gmedio 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, /gio /igal final).
Con expresiones regulares, puedes hacer mucho más.
Tenga en cuenta que este renamees el comando prename(también conocido como Perl rename), que admite expresiones regulares completas de Perl. Hay otro renameque usa patrones y no es tan poderoso. prenamesolí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.mp3y 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.pdfa Something.doc. (La razón de la barra diagonal inversa es que .es un carácter comodín en regexp, por lo que .pdfcoincide, qPDFmientras que \.pdfsolo 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'/gy s/Search/Replace/gpara BASH. Solo debes tener cuidado con los caracteres especiales (y espacios).
Sugiero usar la -nopció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 -nbandera allí. Si se ve bien, presione Uppara regresar, luego borre -ny presione Enter(o reemplácelo -vpara generar todos los cambios que realice).
Nota : las versiones de Ubuntu anteriores a la 17.04 no se envían renamede manera predeterminada, sin embargo, todavía está disponible en los repositorios. Use sudo apt install renamepara instalarlo