Puede usar prename, que a menudo se distribuye junto con Perl. (Por ejemplo, en Debian, / usr / bin / prename está instalado por el perl
paquete). Si no está empaquetado por su distribución (busque prename
y rename
en las ubicaciones de binarios convencionales), está disponible para descargar desde varios lugares, como por ejemplo aquí , aquí o aquí .
Este script toma una expresión regular para aplicar a cada uno de los nombres de archivo, y un conjunto de nombres de archivo, y modifica los nombres de esos archivos de acuerdo con esa expresión regular.
Por ejemplo, podrías hacer
prename -v -n 's/^.{5}//' *
para mostrar lo que sucedería si elimina los primeros cinco caracteres en los nombres de archivo. Para ejecutar realmente el cambio de nombre, simplemente elimine el -n
.
-
. En lugar deecho "$file"
usarprintf '%s\n' "$file"
.mv
. :) Manejaste ese caso :) --- Lo que quise decir fue un problema enecho
sí mismo. Por ejemplo GNU eco (tanto independiente y bash incorporado) no se imprimirá estas cadenas:-n
,-e
y-E
. Incluso de acuerdo con la definición POSIX, no es posible usarlo deecho
manera confiable porque ciertas situaciones no están definidas. Compatible con XSIecho
interpretará secuencias de escape de barra invertida. ---printf '%s\n'
no tiene tales efectos no deseados y dependientes de la implementación.