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

Microsoft ha anunciado el lanzamiento de .NET 9, una nueva versión de su plataforma de código abierto para el desarrollo y ejecución de aplicaciones con...

Actualidad

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

Actualidad

Godot 4.3 ya está disponible como la nueva versión estable del motor de videojuegos distribuido como código abierto, y como ya es habitual por...

Actualidad

Hoy vamos a aprovechar la ocasión para presentar a DevToys, “una navaja suiza para desarrolladores” de código abierto similar a Microsoft PowerToys, que tiene...