Bash tip: Renombrar masivamente (I)
¿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 ' ' '_'`; doneY 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
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
Son formas distintas de hacer lo mismo, es interesante ver como "piensan" los demás. Yo también me lo apunto.
...neuronal no es que piense demasiado xDDDD
gentooza!
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
# apt-get install perl
# man rename
;)


