Actualidad

¿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.

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

«00664471_»

pero el programa ha nombrado los ficheros empezando por:

»      0066_»

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:

  1. ¿cómo lo habríais hecho vosotros?
  2. ¿cuál es la que más os gusta?
  3. ¿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 😉

Te recomendamos

Actualidad

Oracle ha publicado JDK 26, que dependiendo del prisma por el que se mire puede ser entendido como OpenJDK 26 o Java 26. Una...

Actualidad

Canonical ha anunciado la disponibilidad de Ubuntu Pro para WSL, una solución que lleva el soporte empresarial y el mantenimiento de seguridad extendido a...

Actualidad

Google ha anunciado Antigravity, su nueva plataforma de desarrollo asistido por inteligencia artificial. Se trata, en efecto, de un editor de código potenciado por...

Actualidad

Qualcomm ha anunciado la adquisición de Arduino, la compañía italiana sin ánimo de lucro conocida por sus placas de hardware y software libre. La...

Salir de la versión móvil