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

Advertencia, desplázate para continuar leyendo

¿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

Te recomendamos

Miscelánea

Ni estábamos muertos, ni estábamos de parranda. Estábamos, como veis, dándole una vuelta a MuyLinux, que falta le hacía y se nos ha liado...

Actualidad

Kali Linux 2022.2 es la nueva versión de la distribución especializada en seguridad, la segunda en lo que llevamos de año y trae unas cuentas...

Actualidad

Fedora 36 ya está disponible como la última versión de la distribución comunitaria patrocinada por Red Hat, la cual es además la gran pionera...

Actualidad

Tras un año de espera, Inkscape 1.2 ha sido oficialmente publicado como estable para continuar con la evolución de este conocido software de creación...