Soy bastante nuevo en bash, lo siento mucho si esto es una pregunta básica. Estaba tratando de cambiar el nombre de un montón de archivos mp3 para anteponer 1-
a sus nombres de archivo, y mv *.mp3 1-*.mp3
no funcionó por desgracia. Así que traté de escritura que, en primer lugar con eco para probar los comandos:Glob cambio de nombre en bash
for f in *.mp3 ; do echo mv \'$f\' \'1-$f\'; done
que parece salida de los comandos que me gustan, así que me quita el eco, el cambio de la orden de
for f in *.mp3 ; do mv \'$f\' \'1-$f\'; done
Qué ha fallado. Después probé canalizando los comandos en adelante como tan
for f in *.mp3 ; do echo mv \'$f\' \'1-$f\'; done | /bin/sh
que funcionó, pero si alguien me podría aclarar por qué el comando central no funciona Me interesaría saber. O si hay un one-liner más elegante que haría lo que yo quisiera, me interesaría ver eso también.
intenté incluir las comillas simples, porque de lo contrario tendría que escapar de todos los espacios con barras diagonales inversas. mv no le importa las comillas. sin embargo, los nombres de archivo también pueden tener 'en ellos (y' para el caso). – wim
No necesita escaparse de los espacios cuando usa comillas dobles alrededor de '$ f'. Tampoco es problema si el nombre de archivo contiene solo o comillas dobles – bmk