Cambiar el nombre de varias carpetas mediante expresiones regulares

Cambiar el nombre de varias carpetas mediante expresiones regulares

Como dice el título, estoy buscando un comando/herramienta, preferiblemente algo que se ejecute desde la terminal (estoy usando Ubuntu en un servidor remoto), que pueda reemplazar una parte específica de varios directorios a la vez. La estructura de carpetas es así:

Example.of.Structure[app]

Another.Example[app]

Third.Example.of.Structure[app]

Y quiero cambiar el nombre de todas las carpetas, para que la parte [aplicación] se elimine de los nombres de las carpetas.

Intenté incursionar con RegEx básica. Coincidiendo con los corchetes y el texto dentro de ellos.

Lo cual parece funcionar bien cuando lo uso para"encontrándolo"- pero no estoy realmente seguro de cómo ponerlo en un comando.

La expresión regular que se me ocurrió para encontrar el texto dentro de los corchetes (incluidos los corchetes) fue:\[\w+\]

¿Pero cómo pongo esto en un comando?

Gracias.

Respuesta1

Realmente no necesitas una expresión regular para esto. Un simple globo de shell más una expansión de parámetros lo hará:

$ for f in *\[*\]/; do echo mv "${f}" "${f/\[*\]}"; done
mv Another.Example[app]/ Another.Example/
mv Example.of.Structure[app]/ Example.of.Structure/
mv Third.Example.of.Structure[app]/ Third.Example.of.Structure/

(elimine el echouna vez que esté satisfecho de que los reemplazos propuestos sean correctos).

Si desea utilizar una herramienta basada en expresiones regulares, entonces la basada en Perl rename/prenamees la opción obvia:

$ rename -n 's/\[\w+\]//' */
rename(Another.Example[app]/, Another.Example/)
rename(Example.of.Structure[app]/, Example.of.Structure/)
rename(Third.Example.of.Structure[app]/, Third.Example.of.Structure/)

(elimine el -nuna vez que esté satisfecho de que los reemplazos propuestos sean correctos).

Ambos coinciden con elprimeroaparición del patrón. Si existe la posibilidad de que el [app]patrón pueda ocurrir en otro lugar, considere anclar la coincidencia al final del patrón. VerAnclajes de inicio y fin de cuerda

información relacionada