Estoy tratando de encontrar ciertos archivos con el nombre "stringx" y reemplazar el nombre (pero no la extensión) con "stringy". Básicamente, para stringx.txt y stingx.cs, me gustaría stringy.txt y stringy.cs. Intenté probar la expresión regular de mi comando de cambio de nombre usando lo siguiente, pero no arroja resultados:
rename -n 'stringx./s/*$stringy.//' stringx.*
Estoy ejecutando csh bajo Centos. Puedo ver que mi expresión regular probablemente no sea correcta, pero no puedo ver ningún resultado para verificar esto. Puedo ver que hay archivos que se llaman stringx. con lo siguiente:
find ./ -name 'stringx.*'
Respuesta aceptada:
rename stringx stringy stringx.*
Hay (al menos) dos utilidades llamadas rename
en sistemas Linux típicos. Debian y las distribuciones derivadas (incluido Ubuntu) incluyen un script Perl cuya sintaxis sería
rename 's/stringx/stringy/' stringx.*
En otras distribuciones, incluido CentOS, rename
es de util-linux, y su sintaxis es la que escribí anteriormente. Esta utilidad está disponible con el nombre rename.ul
en Debian y derivados.
Si desea recurrir a los subdirectorios, suponiendo que csh se refiere a tcsh (pero en realidad, piense en ingresar a mediados de la década de 1990 y cambiar a zsh):
set globstar
rename stringx stringy stringx.* **/stringx.*