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 🙁

Advertencia, desplázate para continuar leyendo
Cargando anuncio...

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 😉

46 Comentarios
Advertencia
Advertencia

Te recomendamos

Actualidad

Amazon, la archiconocida multinacional, ha anunciado la publicación como código abierto de Rex, que viene a ser una abreviatura de Trusted Remote Execution, Ejecución...

Actualidad

El editor de código Zed, que está publicado como código abierto bajo las licencias APLGv3, GPLv3 y Apache 2, ha anunciado la publicación oficial...

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