si su Linux no ofrece cambiar el nombre, se podría también utilizar el siguiente:
find . -type f -name "Friends*" -execdir bash -c 'mv "$1" "${1/\w+\s*-\s*(\d)x(\d+).*$/S0\1E\2.srt}"' _ {} \;
uso este fragmento bastante a menudo para realizar sustituciones con expresiones regulares en mi consola.
no soy muy bueno en la concha cosas, pero por lo que yo entiendo este código, su explicación sería como: los resultados de búsqueda de su encuentran será pasado a una fiesta de mando (fiesta - c) donde su resultado de búsqueda estará dentro de $ 1 como archivo de origen. el objetivo que sigue es el resultado de una sustitución dentro de un subnivel, donde el contenido de $ 1 (en este caso solo dentro de su parámetro-substituion { // buscar/reemplazar}) también será su resultado de búsqueda. la {} se lo pasa al contenido de -execdir
mejor explicación sería apreciado mucho :)
tenga en cuenta: i única copia-pegar su expresión regular; por favor, pruébelo primero con archivos de ejemplo. dependiendo de su sistema, es posible que deba cambiar \ d y \ w por clases de caracteres como [[: digit:]] o [[: alpha:]]. sin embargo, \ 1 debería funcionar para los grupos.
OpenSUSE, RedHat, Gentoo no admite expresiones regulares en 'rename' – mmrmartin
@mmrmartin: El script de cambio de nombre utilizado aquí es el escrito por Larry Wall. Se utilizó en el archivo '/ usr/bin/rename', pero tal vez se ha cambiado el nombre (sin juego de palabras)? En Debian, el nombre del script ahora es '/ usr/bin/file-rename'. – Thor
openSUSE utiliza el cambio de nombre del paquete 'util-linux', no encontré ningún paquete que proporcione' file-rename', 'prename' o' perl-rename' - solo la solución de trabajo era [install using cpan] (http: // stackoverflow.com/a/32862278/1392034) para mí. – mmrmartin