Estoy tratando de cambiar el nombre de un montón de pistas de música en un directorio, pero recibí este error:
Al mover varios archivos, el último argumento debe ser un directorio
Este es el guión:
for file in * ; do
    mv $file  $(echo $file |sed 's/^.\{5\}//g')
doneEsto funciona para un archivo sin espacios en blanco, ¿cómo modificaría este script?

-. En lugar deecho "$file"usarprintf '%s\n' "$file".mv. :) Manejaste ese caso :) --- Lo que quise decir fue un problema enechosí mismo. Por ejemplo GNU eco (tanto independiente y bash incorporado) no se imprimirá estas cadenas:-n,-ey-E. Incluso de acuerdo con la definición POSIX, no es posible usarlo deechomanera confiable porque ciertas situaciones no están definidas. Compatible con XSIechointerpretará secuencias de escape de barra invertida. ---printf '%s\n'no tiene tales efectos no deseados y dependientes de la implementación.Puede usar prename, que a menudo se distribuye junto con Perl. (Por ejemplo, en Debian, / usr / bin / prename está instalado por el
perlpaquete). Si no está empaquetado por su distribución (busqueprenameyrenameen 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
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.fuente