lunes, 16 de septiembre de 2013

Renombrando cualquier archivo con su información de modificación

Ya hemos visto el programa pyRenamer que nos ayuda a renombrar archivos, sobre todo imagenes, lamentablemente no nos permite agregar la hora de creación a otro tipo de archivos que no sean imágenes.

Para resolverlo tendremos que usar algo de programación batch y usar este pequeño script:



SAVEIFS=$IFS;
IFS=$(echo -en "\n\b");
for i in *.*; do
ini=$(stat -c %y $i  | cut -d ' ' -f 1);
fin=$(stat -c %y $i  | cut -d ' ' -f 2 | cut -c 1-8);
ext=$(echo $i | cut -d '.' -f 2);
nom=$ini" "$fin.$ext;
nom=$(echo $nom | sed 's/\:/\./g');
 if [ $ext != "sh" ]; then
  mv "$i" "$nom";
 fi
done;
IFS=$SAVEIFS
Crea un archivo llamado rn.sh con el código anterior y dale permisos de ejecucion con

sudo chmod +x rn.sh

Y listo ya puedes ejecutarlo con ./rn.sh

Las 2 primeras y la ultima linea (realacionadas con IFS) nos permiten manipular los nombres de archivos que contienen espacios.

En la linea ini= tomamos la fecha de modificación y le cortamos solo la fecha, y en la linea fin= tomamos la perte final (la hora) pero le quitamos los milisegundos.

En las partes donde dice "stat -c %y $i" podemos reemplazar %y por:
%z Ultimo cambio
%x Ultimo acceso
%w Fecha de creación