Bash tip: Renombrar masivamente (I)

12.dic 2003 Envía un trackback

¿Quién no ha querido alguna vez quitar los dichosos espacios que tenemos siempre en los mp3 que nos bajamos o que nos pasan?. Bien, pues mirando un poco de bash, y recibiendo alguna que otra ayuda y consejo, fijémonos que el siguiente script hace exactamente eso:
bash-2.05b$ for i in *.mp3; do mv "$i" `echo "$i" | tr ' ' '_'`; done
Y si ahora renombramos todas nuestras fotos (unas 100 o así) de foto01 a img01, ¿haremos la misma operación 100 veces? NO, para eso está el bash:
bash-2.05b$ for i in `ls *jpg`; do mv "$i" `echo "$i" | sed 's/foto/img/'`; done


tip renombrar masivamente

Comentarios
Gravatar neuronal@13.12.2003, 'me lo apunto'

Mola :D

Yo hace tiempo, en mis épocas del modem 56k y cuando me daba por descargar esos típicos discos de mp3 en páginas de mala muerte donde te encontrabas los mp3 con la extensión renombrada (a .pdf , .zip ...) me tuve que idear una forma de poder renombrar más de 50 ficheros que tenía con extensión .zip a .mp3.

$ ls
total 4,0K
-rw-r--r-- 1 neuronal users 0 2003-12-13 00:34 32a.zip
-rw-r--r-- 1 neuronal users 0 2003-12-13 00:34 aaas.zip
-rw-r--r-- 1 neuronal users 0 2003-12-13 00:34 aaqa.zip
-rw-r--r-- 1 neuronal users 0 2003-12-13 00:34 aas2wsd.zip
-rw-r--r-- 1 neuronal users 0 2003-12-13 00:34 aasd.zip
-rw-r--r-- 1 neuronal users 0 2003-12-13 00:34 aas.zip
-rw-r--r-- 1 neuronal users 0 2003-12-13 00:34 aa.zip
-rw-r--r-- 1 neuronal users 0 2003-12-13 00:34 a.zip

$ rename .zip .mp3 *.zip
$ ls
total 4,0K
-rw-r--r-- 1 neuronal users 0 2003-12-13 00:34 32a.mp3
-rw-r--r-- 1 neuronal users 0 2003-12-13 00:34 aaas.mp3
-rw-r--r-- 1 neuronal users 0 2003-12-13 00:34 aa.mp3
-rw-r--r-- 1 neuronal users 0 2003-12-13 00:34 aaqa.mp3
-rw-r--r-- 1 neuronal users 0 2003-12-13 00:34 aas2wsd.mp3
-rw-r--r-- 1 neuronal users 0 2003-12-13 00:34 aasd.mp3
-rw-r--r-- 1 neuronal users 0 2003-12-13 00:34 aas.mp3
-rw-r--r-- 1 neuronal users 0 2003-12-13 00:34 a.mp3

Y bueno, para convertir espacios a _ más o menos también se podría con rename pero utilizando un for para aquellos ficheros con más de un espacio:

$ ls
total 20K
-rw-r--r-- 1 neuronal users 0 2003-12-13 00:50 1 2 3 4 5 6
-rw-r--r-- 1 neuronal users 0 2003-12-13 00:50 a b c d.tzt
-rw-r--r-- 1 neuronal users 18K 2003-12-13 00:49 c + +
-rw-r--r-- 1 neuronal users 0 2003-12-13 00:49 hola pepe.kk
-rw-r--r-- 1 neuronal users 0 2003-12-13 00:49 mierda de ti.ace

$ for i in *; do rename " " _ *" "* 2>/dev/null; done
$ ls
total 20K
-rw-r--r-- 1 neuronal users 0 2003-12-13 00:50 1_2_3_4_5_6
-rw-r--r-- 1 neuronal users 0 2003-12-13 00:50 a_b_c_d.tzt
-rw-r--r-- 1 neuronal users 18K 2003-12-13 00:49 c_+_+
-rw-r--r-- 1 neuronal users 0 2003-12-13 00:49 hola_pepe.kk
-rw-r--r-- 1 neuronal users 0 2003-12-13 00:49 mierda_de_ti.ace
-rw-r--r-- 1 neuronal users 0 2003-12-13 00:49 ui_sja_ad.mp3

le he metido un 2>/dev/null porque aparecen mensajes de error aunque si que hace lo que tiene que hacer (que le den, "ojos que no ven corazón que no llora" --> 2>/dev/null XD) Eso demuestra que es una chapuza en toda regla, pero joder... mi cerebro ya no da para más XD

Un saludo

Gravatar r0sk@13.12.2003, 'Interesante...'

Son formas distintas de hacer lo mismo, es interesante ver como "piensan" los demás. Yo también me lo apunto.

Gravatar coder@15.12.2003, 'hombre...'

...neuronal no es que piense demasiado xDDDD

gentooza!

Gravatar krs@15.12.2003, 'osi, muy util'

Si señor, que bribones estais hechos, muy util, ahora lo que a mi me interesaría es que pudiera ser recursivo (-R), jeje... ¿sabeis como?
aviso, yo si que no pienso... mi cerebro lo debieron hacer con windows o algo, porque se me cuelga bastante xD

Gravatar roberto@23.12.2003, 'Perl'

# apt-get install perl
# man rename

;)


Escribe tu comentario
 
 
Guardar datos
Escribe tu comentario:
captcha


Intenta que tu comentario sea interesante y con información relevante al tema de la entrada. BBCodes disponibles: [url=http://direccion]texto[/url], negrita: [b]texto[/b], itálica: [i]texto[/i], subrayada: [u]texto[/u]. Para mencionar o citar a alguien (quote): [cita]texto[/cita]