¿Aburrimiento o flexibilidad? ;)

Post para programadores ;) Resulta que en una de las listas internas de mi trabajo escribió un compañero diciendo que un cliente ha tenido mala suerte … MUY mala suerte. Su aplicación le ha creado 80000 (ochenta MIL) ficheros con el nombre equivocado.

computer programming ¿Aburrimiento o flexibilidad? ;)

Resulta que el nombre del fichero debía empezar por:

“00664471_<más_números>”

pero el soft ha nombrado los ficheros empezando por:

“      0066_<más_números>”

Fijaos que el comienzo del nombre de ficheros son 5 espacios en blanco :(

Pues el compi pidió ayuda internamente por si alguien le puede echar una mano con un script para renombrar esos 80000 ficheros …

Como es de esperar en cualquier lista en la que hay más de 1 linuxero … le han llovido infinidad de respuestas: scripts con bash, csh, perl, … Entonces me he preguntado si es que nos aburrimos mucho o es que la flexibilidad que dan los sistemas abiertos dan tanto juego que te encuentras que la única limitación es tu imaginación … o las dos cosas ;) Obviamente, no soy el primero en pensar esto/preguntarme esto ;) Os voy a poner unos cuantos ejemplos de las respuestas que ha recibido el compi:

CSH:

#!/bin/csh -f

foreach f ( 006* )
foreach? set newname=`echo “$f” | sed ‘s/ 006/00664471/’`
foreach? mv “$f” $newname
foreach? end

¿Alguien usa csh por ahí?

BASH

#!/bin/sh

for file in *.dpx;
do
F1=`echo $file | awk -F”_” ‘{print $1}’`
F2=`echo $file | awk -F”_” ‘{print $2}’`
F3=`echo $file | awk -F”_” ‘{print $3}’`
OLDFILE=”$F1″_”$F2″_”$F3″
NEWFILE=”$F1″”64471″_”$F2″_”$F3″
mv $OLDFILE $NEWFILE
done

Comando “rename“:

rename “00664471_” “     006_” *.dpx

Comando “find“:

find ./ -type f -name “     006_*.dpx” -print0  |  xargs -0 -i rename “     006_” “00664471_” {}

Más BASH:

for F in 006*.dpx ; do mv “$F” “00664471${F#     006}”; done

Otro BASH:

find . -name ‘*006_005*.dpx’ -print0 | xargs -0 -n 1 rename

The script rename is as simple :

cat <<!! >rename
#!/bin/sh
mv “$1″ $1
!!

Como siempre, unas preguntas:

  • ¿cómo lo habríais hecho vosotros?
  • ¿cuál es la que más les gusta?
  • ¿nos aburrimos tanto? ;)
  • Esto me recuerda, en una lista de Linux (no recuerdo cuál ya que fue hace muuuuuuuchos años) alguien preguntó algo similar y una de las respuestas fue:

    gcc

    Para gustos … los sistema abiertos ;)

    Palabras Clave:

    • sh-dpx

    Archivado en: Sin categoría

    Dejar un comentario


    Parse error: syntax error, unexpected '<' in /home/enredame/public_html/tumanual.net/wp-content/themes/enred/footer.php on line 2