El rename
comando en Ubuntu 12.04 (la página del manual dice que es parte de perl v5.14.2 2012-03-23) funciona bien en un solo directorio, pero también quiero usarlo en subdirectorios (o, más generalmente, en una lista de archivos que está la salida de otro comando, a través de comillas inversas). Por ejemplo, esperaría
rename "s/ /-/g" `find .`
para cambiar todos los espacios a guiones en todos los nombres de archivo debajo del directorio actual. Pero este comando no hace nada.
( Editar : cambiado rename -n
a rename
. Esa opción es buena para experimentar de forma segura, pero solo es una distracción aquí).
Los backquotes no tienen la culpa, porque reemplazarlos find .
con, por ejemplo, echo */*
funciona.
Primero haciendo find . > foo
, y luego reemplazando find .
con cat foo
, no hace nada.
Incluso colapsar la lista de archivos en una línea, al reemplazar find .
con find . | tr -d '\n'
, no hace nada.
¿Qué elemento tiene la culpa?
s/png/jpg/
. Entonces, esta respuesta general se reduce a la solución alternativa de reemplazar las comillas inversas confind ... -exec rename ...
, ofind ... | xargs rename ...
. Entonces todavía me pregunto por qué fallan las comillas.