El renamecomando 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 -na 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.