Conecta con nosotros

Hola, ¿qué estás buscando?

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.

computer_programming

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

«00664471_<más_números>»

pero el programa 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í?

Advertencia, desplázate para continuar leyendo

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 ;)

46 Comentarios
Advertencia
Advertencia

Te recomendamos

Actualidad

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

Actualidad

El uso de la línea de comandos sigue estando muy vigente en Linux, así que vamos a aprovechar la ocasión para presentar a Warp,...

Actualidad

Las quejas han surtido efecto y, tras conocerse que la nueva versión de Visual Studio Code dejaba sin soporte a «distribuciones Linux viejas», los responsables...

Actualidad

Hace un par de días que se anunció el lanzamiento de Visual Studio Code 1.86, la versión mensual del editor de código multiplataforma de Microsoft....