[Comunidad FotoLibre]

Ayuda => Pide ayuda aquí => Mensaje iniciado por: redy en 31 mar 2010, 17:06 pm

Título: Script para ordenar las fotos en carpetas usando exiftool
Publicado por: redy en 31 mar 2010, 17:06 pm
Como ya se comentó hace tiempo, creo que fué Medyr. El exiftool permite ordenar las fotos basándonos en la información exif. Y ya habíamos preparado un .desktop para geeqie, a petición de tomás senabre para hacerlo automáticamente. El problema es que como geeqie agrupa raw+jpeg había que pasarlo dos veces.

Pero esto se puede arreglar con un sencillo script: Yo le he llamado clasifica y lo puse en ~/bin para que esté accesible en le path del usuario. También hay que darle permiso de ejecución.

Código: [Seleccionar]
#! /bin/bash
#
#  Las siguientes dos variables pueden ser ajustadas segun tus preferencias
#
#  DIR es el directorio padera a dónde se van a mover las fotos se crearán
#  subcarpetas para el año, mes y día_Motivo. Si quieres otra estructura
#  distinta deberás modificar el comando exiftool.
#
#  EXT son las extensiones que se verán afectadas, normalmente jpg y el raw
#  de tu cámara. Ponlo en mayúsculas y en minúsculas por si acaso.
#
DIR="/media/fotos/clasificadas"
EXT="JPG jpg JPEG jpeg NEF nef ORF orf RAW raw CRW crw CR2 cr2 DNG dng"
#
VAR=$(zenity --entry --text="Motivo fotográfico")
while (( $# >= 1 )); do
   NOMBRE="${1%.*}"
   for j in $EXT; do
     if [[ -f "${NOMBRE}.$j" ]]; then
      exiftool '-Directory<DateTimeOriginal' \
        -d "$DIR/%Y/%m/%d${VAR:+_$VAR}" \
        "${NOMBRE}.$j"
     fi
   done
   shift
done


Ahora solo queda poner el .desktop para geeqie.

Código: [Seleccionar]
[Desktop Entry]
Version=1.0
Type=Application
Name=Sort By Date
Comment=Sort files by date using Exiftool
#Name[cs]=
#Name[fr]=
Name[es]=Clasificar por fechas

# %f A single file name, even if multiple files are selected. The
# system reading the desktop entry should recognize that the program in
# question cannot handle multiple file arguments, and it should should
# probably spawn and execute multiple copies of a program for each
# selected file if the program is not able to handle additional file
# arguments. If files are not on the local file system (i.e. are on HTTP
# or FTP locations), the files will be copied to the local file system and
# %f will be expanded to point at the temporary file. Used for programs
# that do not understand the URL syntax.
#
# %F A list of files. Use for apps that can open several local files
# at once. Each file is passed as a separate argument to the executable
# program.
#
# %u A single URL. Local files may either be passed as file: URLs or
# as file path.
#
# %U A list of URLs. Each URL is passed as a separate argument to
# the executable program. Local files may either be passed as file: URLs
# or as file path.
#
# "$GEEQIE_DESTINATION" destination set by Geeqie
Exec=clasifica %F

# Desktop files that are usable only in Geeqie should be marked like this:
Categories=X-Geeqie;
OnlyShowIn=X-Geeqie;

# Show in menu "File"
X-Geeqie-Menu-Path=FileMenu/FileOpsSection

# This is a filter - $GEEQIE_DESTINATION is required
X-Geeqie-Filter=false

# It can be made verbose
# X-Geeqie-Verbose=true
Título: Re: Script para ordenar las fotos en carpetas usando exiftool
Publicado por: tomas.senabre en 31 mar 2010, 17:11 pm
Pues muchas gracias señor Redy, estoy probándolo pero ya.

Te digo algo en unos minutos....
Título: Re: Script para ordenar las fotos en carpetas usando exiftool
Publicado por: tomas.senabre en 31 mar 2010, 17:26 pm
Funciona de narices, me lo he dejado descargando fotos y he venido a responderte.  :-)

Yo además he añadido los RAW de Panasonic el RW2 rw2

Muchas gracias Redy, eres un crack  :chin:
Título: Re: Script para ordenar las fotos en carpetas usando exiftool
Publicado por: jfymal en 03 abr 2010, 18:57 pm
y un pequeño manual de todo el proceso :ejem:
Título: Re: Script para ordenar las fotos en carpetas usando exiftool
Publicado por: JoRdi en 04 abr 2010, 08:02 am
Buenas,

Menuda enciclopedia estás hecho redy, ¡eres un genio!, gracias por el script q:)

Ta lu3go
Título: Re: Script para ordenar las fotos en carpetas usando exiftool
Publicado por: jofial en 04 abr 2010, 10:04 am
Hola chic@s,

Me he perdido un poco...  :-o

Yo partía de los scripts de este hilo (http://comunidad.fotolibre.net/index.php/topic,4869.msg48649.html#msg48649) y que el inconveniente como se comenta era que debías hacer dos pasadas o mover a pinrel los raw a la carpeta creada con el script en geeqie.

Pero ahora no acabo de pillarlo, así que hasta que no lo comprenda no mueva ni un pelo  :-?

Si sustituyo este que comentas por el del hilo de referencia consigo lo mismo pero sin necesidad de hacer dos pasadas? Ya se que la cosa es probarlo, pero ultimamente "mis pruebas suelen ser muy peligrosas y ando escamado...

Saludos

Jose
Título: Re: Script para ordenar las fotos en carpetas usando exiftool
Publicado por: invisible en 04 abr 2010, 18:29 pm
Gracias, redy, me lo apunto para la próxima revisión de mi flujo. :-?
Título: Re: Script para ordenar las fotos en carpetas usando exiftool
Publicado por: redy en 05 abr 2010, 04:55 am
Si sustituyo este que comentas por el del hilo de referencia consigo lo mismo pero sin necesidad de hacer dos pasadas?

Exacto.

y un pequeño manual de todo el proceso :ejem:

¿Como se instala?

Pues partimos de que tienes instalado:

- geeqie 1.0 (o alguna 0.99 Beta).
- exiftool
- zenity

Copias y pegas el primer trozo de código (el script en bash) en un editor de textos. Editas las lineas que empiezan por DIR= y por EXT= para adaptarlas al sitio dónde quieres guardar tus fotos, y asegurarte de que la extensión de tus raws está en la lista. Lo guardas con el nombre 'clasifica' en una carpeta que esté en el path (Yo la guardo en la carpeta bin dentro de la carpeta home de mi usuario).

Le cambias los permisos para que sea ejecutable.

Copias y pegas el segundo trozo de código en un editor de texto y lo guardas en la carpeta .config/geeqie/applications, que tendrás dentro tu carpeta home de usuario, con el nombre de clasificar_fotos.desktop

(Alternativamente a usar un editor de texto, este último paso puedes hacerlo con el propio geeqie: Te vas a editar, preferencias, configurar editores, nuevo. Borras todo y pegas el segundo trozo de código. Abajo en dónde pone new.desktop le cambias el nombre por clasificar_fotos.desktop, y le das a guardar)

Puedes asignarle una tecla rápida en editar, preferencias, preferencias, teclado.

¿Como se usa?

Partimos de que tienes la cámara enchufada y montada en una carpeta, o una tarjeta insertada en el lector, o una carpeta donde están las fotos sacadas en una o varias sesiones, todas en el mismo saco.

Navegas con el geeqie hasta esa carpeta o dispositivo. Seleccionas en la lista de archivos un grupo de fotos que correspondan al mismo 'evento' y le das a editar, editores externos, clasificar por fechas (o pulsas la tecla que le has asignado).

Se te abrirá una ventana de diálogo que te pide un nombre. Le ponemos por ejemplo 'Cumpleaños de pepito' suponiendo que todas las fotos son de la fecha por ejemplo 04/05/2010, dentro de la carpeta que configuraste en el primer script se creará, si no existía ya, una carpeta 2010, dentro de esta una carpeta 05, y dentro de ella una carpeta 04_Cumpleaños de pepito, y allí se moverán todas las fotos seleccionadas. Si el mismo día hicimos más fotos pero de otro evento, las seleccionamos y le ponemos otro nombre e irán a parar a otra carpeta que también empezará por 04_ pero tendrá otro nombre a continuación.

Ahora seleccionamos todas las fotos que corresponden a otro evento, por ejemplo 'Viaje a Roma' pero en este caso no son de un único día, sino que el viaje abarca desde el 1 al 5 de Agosto de 2010. Te pedirá el nombre, le pones 'Viaje a Roma' y se creará la carpeta 08 dentro de 2010 (si no existía ya) y dentro de ella se crearán las carpetas '01_Viaje a Roma', '02_Viaje a Roma' ... '05_Viaje a Roma' y las fotos seleccionadas se copiarán a esas carpetas, cada una al día correspondiente.

Si dejas en blanco el nombre del evento cuando se te pregunta se creará la carpeta del día sin más.

**Modificación para añadir esto**

Por cierto los que quieran modificar la estructura del arbol, tal como comentabamos en este hilo (http://comunidad.fotolibre.net/index.php/topic,4869.msg48838.html#msg48838). Tienen que cambiar la línea del script en bash que dice
Código: [Seleccionar]
      exiftool '-Directory<DateTimeOriginal' \
        -d "$DIR/%Y/%m/%d${VAR:+_$VAR}" \
        "${NOMBRE}.$j"
Ojo que aquí los % son simples y no dobles como en el fichero .desktop.

Por ejemplo si quieres poner todas las carpetas al mismo nivel con el nombre de AÑO_MES_DIA puedes poner

Código: [Seleccionar]
-d "$DIR/%Y_%m_%d${VAR:+_$VAR}" \
Si quisieras crear una carpeta año, una carpeta mes_evento y el día anteponerselo a las fotos en el nombre podrías usar:

Código: [Seleccionar]
      exiftool '-filename<DateTimeOriginal' \
        -d "$DIR/%Y/%m{VAR:+_$VAR}/%d_${NOMBRE}.$j" \
        "${NOMBRE}.$j"

El esquema lo decides tu.

(Modificado para incluír zenity como dependencia)
Título: Re: Script para ordenar las fotos en carpetas usando exiftool
Publicado por: tat en 06 abr 2010, 08:46 am
Su peso en oro, si señor. Gracias maestro, me la apunto para cuando tenga un rato.
Título: Re: Script para ordenar las fotos en carpetas usando exiftool
Publicado por: jofial en 06 abr 2010, 14:41 pm
Gracias una vez mas redy...
funcionando  :-)

Saludos

Jose
Título: Re: Script para ordenar las fotos en carpetas usando exiftool
Publicado por: kallh en 07 abr 2010, 03:52 am
Hola,

Estoy intentando probar el script pero tengo la duda de si tengo instalado exiftool o no.

En el gestor de paquetes Synaptic me sale que tengo instalado  libimage-exiftool-perl y en la descripción del paquete dice Library and program to read and write meta information in multimedia files. Según esta descripción entiendo que el programa está incluído en el paquete.

¿Hay otra manera de comprobarlo?

Un saludo,

Andoni
Título: Re: Script para ordenar las fotos en carpetas usando exiftool
Publicado por: redy en 07 abr 2010, 03:57 am
Estoy intentando probar el script pero tengo la duda de si tengo instalado exiftool o no.

Pues da la impresión de que si, pero para asegurarte puedes teclear en una consola:

Código: [Seleccionar]
exiftool -ver

Si te devuelve ExifTool seguido de un número de versión es que lo tienes, si te dice que 'command not found' o algo parecido es que no.

¡Ah! se me olvidó poner que también es necesario tener instalado 'zenity'. Ahora mismo lo modifico.
Título: Re: Script para ordenar las fotos en carpetas usando exiftool
Publicado por: kallh en 07 abr 2010, 04:03 am
Otro par de preguntas:

Lo guardas con el nombre 'clasifica' en una carpeta que esté en el path (Yo la guardo en la carpeta bin dentro de la carpeta home de mi usuario).

¿Cuál es el path? ¿Cual es la carpeta bin? Yo en mi carpeta no encuentro ninguna con ese nombre.

Le cambias los permisos para que sea ejecutable.

¿Cómo se cambian los permisos?

Siento ser un poco preguntón y mis disculpas si pregunto algo muy evidente y de "párvulos".  :sonroja2:

Gracias y un saludo,

Andoni
Título: Re: Script para ordenar las fotos en carpetas usando exiftool
Publicado por: kallh en 07 abr 2010, 04:04 am
Perdona Redy, nos hemos cruzado.

Miro lo otro ahora y gracias de nuevo.
Título: Re: Script para ordenar las fotos en carpetas usando exiftool
Publicado por: kallh en 07 abr 2010, 04:07 am
En la consola me devuelve solamente un nº: 7.82, que me imagino será la versión de exiftool.
Y en el gestor de paquetes Synaptic aparece zenity instalado.
Título: Re: Script para ordenar las fotos en carpetas usando exiftool
Publicado por: kallh en 07 abr 2010, 04:58 am
Le cambias los permisos para que sea ejecutable.
¿Cómo se cambian los permisos?

Bueno, voy aprendiendo poco a poco y aquí me respondo yo mismo. Veo que los permisos se cambian con botón derecho y en la pestaña Permisos clicar en Permitir ejecutar el archivo como un programa.

Lo guardas con el nombre 'clasifica' en una carpeta que esté en el path (Yo la guardo en la carpeta bin dentro de la carpeta home de mi usuario).

¿Cuál es el path? ¿Cual es la carpeta bin? Yo en mi carpeta no encuentro ninguna con ese nombre.

Respecto a estas dudas: encuentro la carpeta bin en Lugares > Equipo > Sistema de Archivos, pero no sé si es ahí donde tengo que pegar el archivo "clasifica". He intentado pegarla ahí una vez pero no me ha dado permiso para hacerlo. Esta carpeta está fuera de home y no sé si liaré alguna metiéndome donde no debo.  :?

P.D.: Por si acaso, utilizo Ubuntu 9.10.

Un saludo,

Andoni

Título: Re: Script para ordenar las fotos en carpetas usando exiftool
Publicado por: Colegota en 07 abr 2010, 05:15 am
Los permisos de ejecución se los puedes dar también desde consola con

Código: [Seleccionar]
$ chmod +x programa

Aunque si tengo el administrador de archivos abierto lo suelo hacer con el ratón.

El path es una variable que contiene los sitios a buscar programas cuando no los encuentra en el directorio desde el que los llamas. Teclea

Código: [Seleccionar]
$ echo $PATH
y te dirá que directorios tienes tú accesibles.

El /bin, que es el que te refieres de ...->sistema de archivos, es para los programas instalados para todos los usuarios. El que se refiere Redy es uno en tu propio home. Las instalaciones suelen crear un /home/usuario/bin para poner ahí los ejecutables que tú vas creando. Si no lo tienes creado, puedes hacerlo y poner ahí los scripts que vayas usando.

Si te ha salido en la variable $PATH, ya está listo. Si no salía, después de crearlo tecleas

Código: [Seleccionar]
$ export PATH=$PATH:/home/tuusuario/bin
Y ya lo tienes.
Título: Re: Script para ordenar las fotos en carpetas usando exiftool
Publicado por: kallh en 07 abr 2010, 05:23 am
El path es una variable que contiene los sitios a buscar programas cuando no los encuentra en el directorio desde el que los llamas. Teclea

Código: [Seleccionar]
$ echo $PATH
y te dirá que directorios tienes tú accesibles.

Esto me devuelve:

Código: [Seleccionar]
andoni@andoni-desktop:~$  echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
andoni@andoni-desktop:~$

Título: Re: Script para ordenar las fotos en carpetas usando exiftool
Publicado por: redy en 07 abr 2010, 05:26 am
¿Cuál es el path?

El path es una variable de entorno que indica separadas por ':' las carpetas en las que se buscarán los ficheros ejecutables si no se indica en que carpeta están al ejecutarlos.

Código: [Seleccionar]
echo $PATH

Cita
¿Cual es la carpeta bin?
 Yo en mi carpeta no encuentro ninguna con ese nombre.

Depende de las distribuciones en algunas /home/USUARIO/bin (o lo que es lo mismo ~/bin) se crea por defecto y se añade al path. Si no es tu caso puedes crearla (desde el nautilus o el navegador de ficheros que uses) y editar el fichero .bashrc para añadirle al final una línea que ponga

Código: [Seleccionar]
PATH="$PATH:~/bin"

Para editar el fichero puedes buscarlo en tu carpeta home, teniendo en cuenta que tienes que visualizar los ficheros ocultos para verlo, y editarlo o puedes poner en un terminal:
Código: [Seleccionar]
gedit ~/.bashrc

(El símbolo ~ lo consigues en un teclado español con la tecla [Alt Gr]+[Ñ] o [Alt Gr]+la que tiene el Interrogante de abrir y la admiración de abrir.)


Otra posibilidad si no quieres crear la carpeta bin ni tocar los paths es que pongas el path completo en la línea exec del fichero .desktop.

Supongamos que guardaste el script clasifica en /home/kallh pues modificas la línea exec del .desktop para que en vez de poner:

Código: [Seleccionar]
Exec=clasifica %F

ponga:

Código: [Seleccionar]
Exec=/home/kallh/clasifica %F

Cita
¿Cómo se cambian los permisos?

Desde el nautilus le das con el botón derecho al archivo, propiedades, permisos y marcas 'Permitir ejecutar...'

Desde comando:

Código: [Seleccionar]
chmod +x nombre_del_archivo


Título: Re: Script para ordenar las fotos en carpetas usando exiftool
Publicado por: kallh en 07 abr 2010, 05:32 am
Gracias Colegota y Redy.  q:)

Ahora tengo que ir al curro, así que seguiré con ello al mediodía o a la noche. Como no estoy muy acostumbrado a la línea de comandos y demás, tengo que leerlo tranquilamente y digerirlo poco a poco para enterarme bien de lo que hago.

Un saludo,

Andoni
Título: Re: Script para ordenar las fotos en carpetas usando exiftool
Publicado por: Manolo en 07 abr 2010, 17:08 pm
A partir del podcast me di cuenta que la manera de ordenar las fotos de Tomás y la mía son muy parecidas y me decidí a adoptar el script de Redy en su formato para Geeqie. Funciona a las mil maravillas, con algún cambio que he puesto para adaptarlo a mi forma de clasificar.

Sin embargo, he hecho una segunda versión en la que aprovecho para introducir los datos de autoría y licencia en los RAW. Y esa no funciona tan bien y no me lo explico  :?

Veamos: la versión de Redy mueve las fotos de la tarjeta al directorio que corresponde y eso es lo que me interesa. Sin embargo, la versión "ampliada" sólo copia las imágenes por lo que después tengo que andar borrando a mano, por no hablar de la confusión cuando las fotos de un mismo tema no van consecutivas.

Estos son los códigos. Versión Redy normal:

Código: [Seleccionar]
Exec=VAR=$(zenity --entry --text="Motivo fotográfico") && exiftool '-Directory<DateTimeOriginal' -d "/home/imagenes/%%Y/%%m %%B/%%d${VAR:+ $VAR}" %F
Y esta es mi versión, que sólo añade dos opciones de inserción de datos EXIF:

Código: [Seleccionar]
Exec=VAR=$(zenity --entry --text="Motivo fotográfico") && exiftool  -Artist='Manuel Apellidos http://mpancorbo.ipernity.com' -'Copyright Owner=CC-BY - http://creativecommons.org/licenses/by/3.0/'  '-Directory<DateTimeOriginal' -d "/home/imagenes/%%Y/%%m %%B/%%d${VAR:+ $VAR}" %F
¿Qué pasa?  ::)
Título: Re: Script para ordenar las fotos en carpetas usando exiftool
Publicado por: Colegota en 07 abr 2010, 17:36 pm
Gracias Colegota y Redy.  q:)
Ahora tengo que ir al curro, así que seguiré con ello al mediodía o a la noche. Como no estoy muy acostumbrado a la línea de comandos y demás, tengo que leerlo tranquilamente y digerirlo poco a poco para enterarme bien de lo que hago.

Pero hazle caso a Redy con lo del .bashrc porque yo he respondido muy deprisa y lo del export es solución momentánea que, o se pone siempre para llamarlo o se pierde al cerrar la sesión. Así que grabarlo en el .bashrc es más práctico. Y yo me iría más por lo de crearte la carpeta bin en home, que seguro que a partir de ahora comenzarás a añadir scripts con frecuencia. :)
Título: Re: Script para ordenar las fotos en carpetas usando exiftool
Publicado por: kallh en 07 abr 2010, 20:03 pm
Bueno, por fín tengo el script funcionando.

He creado la carpeta bin en mi usuario y he modificado el archivo .bashrc añadiéndole al final

Código: [Seleccionar]
PATH="$PATH:~/bin"
tal y como me ha indicado Redy.

He modificado la ruta del DIR a donde quería que me copiara las fotos (que la tenía mal escrita). Al principio no me funcionaba el script pero le he dado permiso de ejecución al archivo creado en .config/geeqie/applications y por fín está todo funcionando. Ahora tengo que decidir qué tipo de jerarquía quiero para la clasificación en años, meses y días, pero eso lo tendré que dejar para mañana que se me cierran las pestañas.

De nuevo mil gracias a Redy y Colegota por vuestra ayuda.  :chin:
Y espero no ser muy pesado, aunque conociéndome presumo que habrá más peticiones de ayuda.  :sonroja2:

Un saludo,

Andoni
Título: Re: Script para ordenar las fotos en carpetas usando exiftool
Publicado por: redy en 20 abr 2010, 14:07 pm
Una corrección de la que me acabo de dar cuenta:

Si la carpeta de dónde importamos las fotos tiene un tipo de fichero case-insensitive, por ejemplo FAT, lo cual suele ser usual en tarjetas de memoria, es mejor poner la lista de ficheros con la extensión en minúsculas primero ("jpg JPG nef NEF ..." y no "JPG jpg NEF nef ...") para que el destino lo ponga en minúsculas, porque como el mismo fichero lo va a encontrar de las dos formas, lo grabará en la primera de la lista.
Título: Re: Script para ordenar las fotos en carpetas usando exiftool
Publicado por: JoRdi en 20 abr 2010, 15:22 pm
Buenas,

Una corrección de la que me acabo de dar cuenta:

Pues nada, que se agradece la información o mejor dicho la corrección q:)

Ta lu3go
Título: Re: Script para ordenar las fotos en carpetas usando exiftool
Publicado por: tomas.senabre en 29 abr 2010, 17:51 pm
Corregido  :-) y apuntada la modificación de Manolo
Título: Re: Script para ordenar las fotos en carpetas usando exiftool
Publicado por: redy en 30 abr 2010, 04:36 am
Veamos: la versión de Redy mueve las fotos de la tarjeta al directorio que corresponde y eso es lo que me interesa. Sin embargo, la versión "ampliada" sólo copia las imágenes por lo que después tengo que andar borrando a mano, por no hablar de la confusión cuando las fotos de un mismo tema no van consecutivas.

La explicación la tienes en la página de exiftool (http://www.sno.phy.queensu.ca/~phil/exiftool/filename.html):

Cita
Notes:

Writing the FileName and/or Directory tags alone causes the file to be renamed or moved, not copied. However, if any other tags are written at the same time, then the file is rewritten to the new destination and the original file is left unchanged. (The only exception to this is FileModifyDate tag, which will not cause the file to be rewritten because it is the only other writable tag not representing meta information within the file.) But if desired, the -overwrite_original option may be used in this case to remove the original copy.

Vamos que el exiftool si solo le pasas el parámetro -directory o -filename efectivamente mueve o renombra el fichero, pero si le pasas cualquier otro parámetro a parte de esos, que modifique algun tag, deja la copia original intacta. (Si le modificas los tags sin cambiarle el directorio o el filename también te deja la copia original añadiendole la palabra _original al final). Para evitar que deje la copia, tanto en uno como en otro caso, has de añadir el parámetro -overwrite_original.

Título: Re: Script para ordenar las fotos en carpetas usando exiftool
Publicado por: jfymal en 14 jun 2010, 02:19 am
Pues por fin he tenido tiempo de poner en marcha el script, fuciona perfectamente, gracias Redy por la explicación, como siempre muy efectiva.
Título: Re: Script para ordenar las fotos en carpetas usando exiftool
Publicado por: jotawolf en 11 ago 2010, 19:10 pm
Aunque está un poco chapuza les dejo el código de mi script final.
Ordena en tres directorios distintos uno para las fotos, otro los negativos (raw) y otros los videos.
Para los jpeg pone un comentario con el autor y la licencia.
A ver cuando me pongo con uno en perl un poco más serio...

Código: [Seleccionar]
#! /bin/bash
#
# original en http://comunidad.fotolibre.net/index.php/topic,5670.0.html
#
# v00.1 Modificado por FJA
# 11-08-2010
# agregado 2 loops para poner negativos y videos.
#
BASEDIR="/disco2"
FOTOS_DIR="$BASEDIR/Pictures"
NEGATIVOS_DIR="$BASEDIR/Negativos"
VIDEOS_DIR="$BASEDIR/Videos"
#EXT="jpg JPG jpeg JPEG png PNG nef NEF orf ORF raw RAW crw CRW cr2 CR2 dng DNG avi AVI"
FOT="jpg JPG jpeg JPEG"
NEG="nef NEF orf ORF raw RAW crw CRW cr2 CR2 dng DNG"
VID="avi AVI"
COMENTARIO="Fernando Jose Andrade,http://www.fjandrade.com,C:Attribution Creative Commons"
#
MOTIVO=$(zenity --entry --text="Motivo fotográfico")
while (( $# >= 1 )); do
   NOMBRE="${1%.*}"
   for j in $FOT; do
     if [[ -f "${NOMBRE}.$j" ]]; then
      exiftool '-Directory<DateTimeOriginal' \
        -d "$FOTOS_DIR/%Y/%m${MOTIVO:+_$MOTIVO}" \
-Comment="$COMENTARIO" -overwrite_original  \
        "${NOMBRE}.$j"
     fi
   done
   for k in $NEG; do
     if [[ -f "${NOMBRE}.$k" ]]; then
      exiftool '-Directory<DateTimeOriginal' \
        -d "$NEGATIVOS_DIR/%Y/%m${MOTIVO:+_$MOTIVO}" \
        "${NOMBRE}.$k"
     fi
   done
   for l in $VID; do
     if [[ -f "${NOMBRE}.$l" ]]; then
      exiftool '-Directory<DateTimeOriginal' \
        -d "$VIDEOS_DIR/%Y/%m${MOTIVO:+_$MOTIVO}" \
        "${NOMBRE}.$l"
     fi
   done
   shift
done

Saludos.

FJA
Título: Re: Script para ordenar las fotos en carpetas usando exiftool
Publicado por: redy en 17 ago 2010, 10:05 am
Aunque está un poco chapuza les dejo el código de mi script final.
Ordena en tres directorios distintos uno para las fotos, otro los negativos (raw) y otros los videos.
Para los jpeg pone un comentario con el autor y la licencia.
A ver cuando me pongo con uno en perl un poco más serio...

Gracias por mejorarlo, y sobre todo por compartirlo.  :-)
Título: Re: Script para ordenar las fotos en carpetas usando exiftool
Publicado por: JoRdi en 18 ago 2010, 18:07 pm
Buenas,

Gracias por mejorarlo, y sobre todo por compartirlo.

 q:)

Ta lu3go
Título: Re: Script para ordenar las fotos en carpetas usando exiftool
Publicado por: tomas.senabre en 25 ago 2010, 20:54 pm
Gracias por compartirlo Jotawolf  :-)
Título: Re: Script para ordenar las fotos en carpetas usando exiftool
Publicado por: kallh en 26 ago 2010, 11:54 am
Gracias por el aporte jotawolf  :ok:
Título: Re: Script para ordenar las fotos en carpetas usando exiftool
Publicado por: alcion en 10 ene 2011, 07:07 am
¡Qué bueno el script este de ordenar por fecha! Yo tenía uno para renombrar los archivos añadiéndole la fecha de creación del fichero en la tarjeta, pero este creo que es mucho mejor que el que yo tenía.
Muchas gracias por compartirlo.

Salud!
Título: Re: Script para ordenar las fotos en carpetas usando exiftool
Publicado por: invisible en 02 jul 2011, 13:18 pm
Buenas,

Gracias, redy, me lo apunto para la próxima revisión de mi flujo. :-?

Bien, pues en eso estoy... :sonroja2:

Me encuentro revisando mi método de organización y estoy atascado. En estos momentos, la estructura de directorios que tengo es la que presenta redy en su script, es decir, YYYY/MM/DD_Motivo, pero me gustaría renombrar los archivos originales por YYMMDD_Motivo_###.ext, donde las almohadillas representarían la numeración de éstos. ¡Ah! otra cosa... ¿se puede forzar que la extensión vaya en minúsculas independientemente del original?

Título: Re: Script para ordenar las fotos en carpetas usando exiftool
Publicado por: mmggmm en 02 ago 2011, 09:09 am
...

Me encuentro revisando mi método de organización y estoy atascado. En estos momentos, la estructura de directorios que tengo es la que presenta redy en su script, es decir, YYYY/MM/DD_Motivo, pero me gustaría renombrar los archivos originales por YYMMDD_Motivo_###.ext, donde las almohadillas representarían la numeración de éstos. ¡Ah! otra cosa... ¿se puede forzar que la extensión vaya en minúsculas independientemente del original?



Retomo este hilo porque yo quisiera hacer lo mismo y no soy capaz. Suponía que, partiendo del script "clasifica", se podría, además de clasificar las fotos por fechas y motivo, utilizar este último, junto con algún comando de exiftool, para renombrar y clasificar las fotos de un plumazo. Yo he intentado modificar el script de redy, pero, quizá por no tener ni idea de bash, no he conseguido nada. ¿Hay alguna solución que yo no haya encontrado? Si no la hay, quizá a alguno de estos genios del bash le pique el gusanillo...
Un saludo a todos,
Marcial
Título: Re: Script para ordenar las fotos en carpetas usando exiftool
Publicado por: redy en 02 ago 2011, 12:55 pm
Me encuentro revisando mi método de organización y estoy atascado. En estos momentos, la estructura de directorios que tengo es la que presenta redy en su script, es decir, YYYY/MM/DD_Motivo, pero me gustaría renombrar los archivos originales por YYMMDD_Motivo_###.ext, donde las almohadillas representarían la numeración de éstos. ¡Ah! otra cosa... ¿se puede forzar que la extensión vaya en minúsculas independientemente del original?

Por numeración ¿te refieres a la parte númerica del nombre original del archivo, o a otra cosa? ¿No te vale con el nombre original entero?

Se me está ocurriendo que si se puede hacer todo eso que dices, solo es cuestión de calcular un par de cosas antes del exiftool.

Para la extensión en minúsculas habría que guardarla en una variable, y también habría que guardar en una variable el nombre original solamente.

Código: [Seleccionar]
ext1="$( echo $j| tr [:upper:] [:lower:])"
solonombre="${NOMBRE##*/}"

Y luego se usaría algo como:
Código: [Seleccionar]
exiftool -overwrite_original \
'-Filename<DateTimeOriginal' \
        -d "$DIR/%Y/%m/%Y%m%d_${VAR:+_$VAR}_$solonombre.$ext1" \
        "${NOMBRE}.$j"

Estoy diciéndolo de memoria, así que haced los experimentos con gaseosa (o sea con copias de archivos que no os importe perder por si acaso)....
Título: Re: Script para ordenar las fotos en carpetas usando exiftool
Publicado por: invisible en 02 ago 2011, 13:15 pm
Por numeración ¿te refieres a la parte númerica del nombre original del archivo, o a otra cosa? ¿No te vale con el nombre original entero?
Me refiero al número de orden de las fotos dentro del directorio. Yo suelo renombrar las fotos que importo desde la tarjeta desde YYMMDD_Motivo_001.ext a YYMMDD_Motivo_XXX.ext; es decir, que me olvido del nombre de archivo que le da la cámara por completo.

Se me está ocurriendo que si se puede hacer todo eso que dices, solo es cuestión de calcular un par de cosas antes del exiftool.
...
Estoy diciéndolo de memoria, así que haced los experimentos con gaseosa (o sea con copias de archivos que no os importe perder por si acaso)....
Voy a tomarme un café y hago las pruebas... ya te contaré. :asias:
Título: Re: Script para ordenar las fotos en carpetas usando exiftool
Publicado por: invisible en 02 ago 2011, 13:33 pm
...
Voy a tomarme un café y hago las pruebas... ya te contaré. :asias:

No me aclaro sobre dónde intercalar este nuevo trozo de código. A continuación pego el código del script tal y como lo tengo:

Código: [Seleccionar]
#! /bin/bash
#
#  Las siguientes dos variables pueden ser ajustadas segun tus preferencias
#
#  DIR es el directorio padera a dónde se van a mover las fotos se crearán
#  subcarpetas para el año, mes y día_Motivo. Si quieres otra estructura
#  distinta deberás modificar el comando exiftool.
#
#  EXT son las extensiones que se verán afectadas, normalmente jpg y el raw
#  de tu cámara. Ponlo en mayúsculas y en minúsculas por si acaso.
#
DIR="/home/portillobarrera/Imágenes/Archivo"
EXT="jpg JPG jpeg JPEG nef NEF orf ORF raw RAW crw CRW cr2 CR2 rw2 RW2 dng DNG"
#
VAR=$(zenity --entry --text="Motivo fotográfico")
while (( $# >= 1 )); do
   NOMBRE="${1%.*}"
   for j in $EXT; do
     if [[ -f "${NOMBRE}.$j" ]]; then
      exiftool -Artist='Luis M. Portillo Barrera [portillobarrera@lavabit.com]' -Copyright='Copyleft :) cc-by-sa
Puedes copiar, distribuir, publicar y modificar esta fotografia bajo las condiciones expresadas en http://creativecommons.org/licenses/by-sa/3.0/es/' '-Directory<DateTimeOriginal' \
        -d "$DIR/%Y/%m/%d${VAR:+_$VAR}" -overwrite_original \
        "${NOMBRE}.$j"
     fi
   done
   shift
done
Título: Re: Script para ordenar las fotos en carpetas usando exiftool
Publicado por: redy en 02 ago 2011, 15:08 pm

No me aclaro sobre dónde intercalar este nuevo trozo de código. A continuación pego el código del script tal y como lo tengo:


Código: [Seleccionar]
#! /bin/bash
#
#  Las siguientes dos variables pueden ser ajustadas segun tus preferencias
#
#  DIR es el directorio padera a dónde se van a mover las fotos se crearán
#  subcarpetas para el año, mes y día_Motivo. Si quieres otra estructura
#  distinta deberás modificar el comando exiftool.
#
#  EXT son las extensiones que se verán afectadas, normalmente jpg y el raw
#  de tu cámara. Ponlo en mayúsculas y en minúsculas por si acaso.
#
DIR="/home/portillobarrera/Imágenes/Archivo"
EXT="jpg JPG jpeg JPEG nef NEF orf ORF raw RAW crw CRW cr2 CR2 rw2 RW2 dng DNG"
#
VAR=$(zenity --entry --text="Motivo fotográfico")
while (( $# >= 1 )); do
   NOMBRE="${1%.*}"
   for j in $EXT; do
     if [[ -f "${NOMBRE}.$j" ]]; then
      ext1="$( echo $j| tr [:upper:] [:lower:])"
      solonombre="${NOMBRE##*/}"
      exiftool -Artist='Luis M. Portillo Barrera [portillobarrera@lavabit.com]' -Copyright='Copyleft :) cc-by-sa
Puedes copiar, distribuir, publicar y modificar esta fotografia bajo las condiciones expresadas en http://creativecommons.org licenses/by-sa/3.0/es/' '-Filename<DateTimeOriginal' \
        -d "$DIR/%Y/%m/%Y%m%d_${VAR:+_$VAR}_$solonombre.$ext1" -overwrite_original \
        "${NOMBRE}.$j"
     fi
   done
   shift
done

Título: Re: Script para ordenar las fotos en carpetas usando exiftool
Publicado por: invisible en 02 ago 2011, 15:47 pm
Gracias por tu ayuda,

Te cuento como van las pruebas...

Después de unas mínimas correcciones/adaptaciones:
Código: [Seleccionar]
        -d "$DIR/%Y/%m/%d${VAR:+_$VAR}/%y%m%d${VAR:+_$VAR}_$solonombre.$ext1" -overwrite_original \
        "${NOMBRE}.$j"

aún no obtengo exactamente lo que pretendo. Me mueve las fotos al directorio del día en que fueron tomadas, con el motivo, y renombra las fotos tal que así: yyMMDD_Motivo_NombreOriginal.ext.
Me gustaría sobreescribir el nombre original y colocar en su lugar la numeración como comenté antes... ¿se puede?

Gracias otra vez, :-)
Título: Re: Script para ordenar las fotos en carpetas usando exiftool
Publicado por: invisible en 02 ago 2011, 15:55 pm
...
Me gustaría sobreescribir el nombre original y colocar en su lugar la numeración como comenté antes... ¿se puede?

Casi lo tengo cambiando
Código: [Seleccionar]
      solonombre="${NOMBRE##*/}"por
Código: [Seleccionar]
      solonombre="${###}"
pero solo me pone una cifra (1) y yo quiero tres (001)... :?
Título: Re: Script para ordenar las fotos en carpetas usando exiftool
Publicado por: redy en 02 ago 2011, 16:03 pm
Me gustaría sobreescribir el nombre original y colocar en su lugar la numeración como comenté antes... ¿se puede?

Poder se podrá, lo que pasa es que no se me ocurre cómo.  Me surgen mas complicaciones que soluciones.  :?

Título: Re: Script para ordenar las fotos en carpetas usando exiftool
Publicado por: invisible en 02 ago 2011, 16:06 pm
Me gustaría sobreescribir el nombre original y colocar en su lugar la numeración como comenté antes... ¿se puede?

Poder se podrá, lo que pasa es que no se me ocurre cómo.  Me surgen mas complicaciones que soluciones.  :?

Eso ya está superado... al final, el discípulo :collejas: al maestro... :toma:
Solo me falta lo de las tres cifras en la numeración. :?
Título: Re: Script para ordenar las fotos en carpetas usando exiftool
Publicado por: redy en 02 ago 2011, 16:27 pm
Eso ya está superado... al final, el discípulo :collejas: al maestro... :toma:
Solo me falta lo de las tres cifras en la numeración. :?

Lo de poner un contador ya se me había ocurrido, (aunque con ${###} no creo que funcione). ${#} es el número de parámetros pasados al script, como usamos shift se va decrementando en uno cada vez que procesamos un parámetro así que podría usarse como contador inverso.

pero ¿Como cuenta el contador desde 1 siempre que aplico el script? ¿Que pasa si luego añado más imágenes a la misma carpeta, vuelve a contar desde 1 o tiene que mirar cual es la última? Y si las fotos son de fechas distintas y por lo tanto van a carpetas distintas ¿Como sabría el contador que tiene que volver a empezar?
Título: Re: Script para ordenar las fotos en carpetas usando exiftool
Publicado por: invisible en 02 ago 2011, 16:37 pm
...
pero ¿Como cuenta el contador desde 1 siempre que aplico el script? ¿Que pasa si luego añado más imágenes a la misma carpeta, vuelve a contar desde 1 o tiene que mirar cual es la última? Y si las fotos son de fechas distintas y por lo tanto van a carpetas distintas ¿Como sabría el contador que tiene que volver a empezar?
Mmmm... gran dilema...  :? Nunca me ha ocurrido que tuviera que meter en la misma carpeta fotos de distintas sesiones; lo normal hasta ahora ha sido repartir en distintas carpetas fotos de la misma sesión porque tuvieran diferentes motivos, pero tienes razón: se puede dar el caso de que dos descargas distintas del mismo día y mismo motivo acaben en la misma carpeta o que una descarga con fotos de distintos días se dividan en varias carpetas y la numeración ya no seguiría el patrón que yo quiero... :?
Título: Re: Script para ordenar las fotos en carpetas usando exiftool
Publicado por: redy en 02 ago 2011, 16:53 pm
Ah, para lo de tres cifras puedes usar printf:

solonombre="$(printf %03d ${#})"


Título: Re: Script para ordenar las fotos en carpetas usando exiftool
Publicado por: invisible en 02 ago 2011, 17:02 pm
Ah, para lo de tres cifras puedes usar printf:

solonombre="$(printf %03d ${#})"


Perfecto. :-)
Por lo pronto lo dejo así. A ver si un día de estos que estés aburrido lo perfeccionamos... :)o

Gracias, apúntate unas cuantas... :chin:
Título: Re: Script para ordenar las fotos en carpetas usando exiftool
Publicado por: invisible en 03 ago 2011, 03:29 am
...
Perfecto. :-)
Por lo pronto lo dejo así. A ver si un día de estos que estés aburrido lo perfeccionamos... :)o
...

Pego aquí el código actual por si a alguien le sirve mi método:

Código: [Seleccionar]
#! /bin/bash
#
#  Las siguientes dos variables pueden ser ajustadas segun tus preferencias
#
#  DIR es el directorio padera a dónde se van a mover las fotos se crearán
#  subcarpetas para el año, mes y día_Motivo. Si quieres otra estructura
#  distinta deberás modificar el comando exiftool.
#
#  EXT son las extensiones que se verán afectadas, normalmente jpg y el raw
#  de tu cámara. Ponlo en mayúsculas y en minúsculas por si acaso.
#
DIR="/home/portillobarrera/Imágenes/Archivo"
EXT="jpg JPG jpeg JPEG nef NEF orf ORF raw RAW crw CRW cr2 CR2 rw2 RW2 dng DNG"
#
VAR=$(zenity --entry --text="Motivo fotográfico")
while (( $# >= 1 )); do
   NOMBRE="${1%.*}"
   for j in $EXT; do
     if [[ -f "${NOMBRE}.$j" ]]; then
      ext1="$( echo $j| tr [:upper:] [:lower:])"
      solonombre="$(printf %03d ${#})"
      exiftool -Artist='Luis M. Portillo Barrera [portillobarrera@lavabit.com]' -Copyright='Copyleft :) cc-by-sa
Puedes copiar, distribuir, publicar y modificar esta fotografia bajo las condiciones expresadas en
http://creativecommons.org licenses/by-sa/3.0/es/' '-Filename<DateTimeOriginal' \
        -d "$DIR/%Y/%m/%d${VAR:+_$VAR}/%y%m%d${VAR:+_$VAR}_$solonombre.$ext1" -overwrite_original \
        "${NOMBRE}.$j"
     fi
   done
   shift
done
Título: Re: Script para ordenar las fotos en carpetas usando exiftool
Publicado por: invisible en 04 ago 2011, 04:36 am
[nota mental]

Ayer estuve haciendo unas pruebas y, al descargar de la tarjeta, me numera las fotos al revés, es decir, del 001 para la más reciente, hasta la que sea para la primera que hice de esa descarga. :?
No tuve tiempo para probar en profundidad; esta tarde procuraré mirarlo con más detenimiento. :lee:

[/nota mental]
Título: Re: Script para ordenar las fotos en carpetas usando exiftool
Publicado por: redy en 04 ago 2011, 09:58 am
[nota mental]

Ayer estuve haciendo unas pruebas y, al descargar de la tarjeta, me numera las fotos al revés, es decir, del 001 para la más reciente, hasta la que sea para la primera que hice de esa descarga. :?
No tuve tiempo para probar en profundidad; esta tarde procuraré mirarlo con más detenimiento. :lee:

[/nota mental]

Claro, ya te dije que ${#} era el número de parámetros que quedan por procesar. Si se supone que las fotos se pasan en orden al script la cuenta es de N a 1

Para darle la vuelta puedes poner antes del while

N=${#}

Y cambiar el printf por

solonombre="$(printf %03d $(( N + 1 -  ${#} )) )"



Título: Re: Script para ordenar las fotos en carpetas usando exiftool
Publicado por: invisible en 04 ago 2011, 12:01 pm
Sigo pensando que, cuando alguien escribe en el foro algo de código, suena esto (http://upload.wikimedia.org/wikipedia/commons/3/37/Alarm_-_Diving_-_H8.ogg) en tu casa y se encienden las luces rojas... :toma:

Gracias mil, funciona a las mil maravillas. :-)

Código: [Seleccionar]
#! /bin/bash
#
#  Las siguientes dos variables pueden ser ajustadas segun tus preferencias
#
#  DIR es el directorio padera a dónde se van a mover las fotos se crearán
#  subcarpetas para el año, mes y día_Motivo. Si quieres otra estructura
#  distinta deberás modificar el comando exiftool.
#
#  EXT son las extensiones que se verán afectadas, normalmente jpg y el raw
#  de tu cámara. Ponlo en mayúsculas y en minúsculas por si acaso.
#
DIR="/home/portillobarrera/Imágenes/Archivo"
EXT="jpg JPG jpeg JPEG nef NEF orf ORF raw RAW crw CRW cr2 CR2 rw2 RW2 dng DNG"
#
VAR=$(zenity --entry --text="Motivo fotográfico")
N=${#}
while (( $# >= 1 )); do
   NOMBRE="${1%.*}"
   for j in $EXT; do
     if [[ -f "${NOMBRE}.$j" ]]; then
      ext1="$( echo $j| tr [:upper:] [:lower:])"
      solonombre="$(printf %03d $(( N + 1 -  ${#} )) )"
      exiftool -Artist='Luis M. Portillo Barrera [portillobarrera@lavabit.com]' -Copyright='Copyleft :) cc-by-sa
Puedes copiar, distribuir, publicar y modificar esta fotografia bajo las condiciones expresadas en
http://creativecommons.org licenses/by-sa/3.0/es/' '-Filename<DateTimeOriginal' \
        -d "$DIR/%Y/%m/%d${VAR:+_$VAR}/%y%m%d${VAR:+_$VAR}_$solonombre.$ext1" -overwrite_original \
        "${NOMBRE}.$j"
     fi
   done
   shift
done

Modificado para enlazar a contenido libre. ;)

Título: Re: Script para ordenar las fotos en carpetas usando exiftool
Publicado por: alcion en 12 ago 2011, 16:40 pm
... al script tal como está le veo un peligro. Si le corres el script a dos grupos de fotos del mismo día y mismo motivo fotográfico, el segundo grupo machacará a las fotos del primer grupo...

Cambiando la linea de código donde se define solonombre de la forma siguiente

Código: [Seleccionar]
#      solonombre="$(printf %03d $(( N + 1 -  ${#} )) )"

      solonombre="${NOMBRE: (-4)}"

se conservaría la numeración de la foto dentro de la tarjeta, y así no habría peligro de machacar unas fotos con otras.

... aunque lo mismo no es eso lo que se buscaba.
Título: Re: Script para ordenar las fotos en carpetas usando exiftool
Publicado por: invisible en 01 sep 2011, 14:51 pm
... al script tal como está le veo un peligro. Si le corres el script a dos grupos de fotos del mismo día y mismo motivo fotográfico, el segundo grupo machacará a las fotos del primer grupo...
Acabo de hacer la prueba y lo que ocurre es que la deja tal cual... Me explico: dos fotos del mismo día, selecciono la primera y le aplico el script... bien. Selecciono luego la otra, le aplico el script (con el mismo asunto) y no le hace nada. :ejem:

Lo ideal sería que, al ver que ya hay un archivo con ese nombre, le asigne el siguiente según la numeración... :? Lo digo por si alguno está aburrido y quiere mirarlo... :)o
Título: Re: Script para ordenar las fotos en carpetas usando exiftool
Publicado por: redy en 05 sep 2011, 07:10 am
... al script tal como está le veo un peligro. Si le corres el script a dos grupos de fotos del mismo día y mismo motivo fotográfico, el segundo grupo machacará a las fotos del primer grupo...
Acabo de hacer la prueba y lo que ocurre es que la deja tal cual... Me explico: dos fotos del mismo día, selecciono la primera y le aplico el script... bien. Selecciono luego la otra, le aplico el script (con el mismo asunto) y no le hace nada. :ejem:

El exiftool es lo bastante inteligente para no sobrescribir el archivo ya existente...

Cita
Lo ideal sería que, al ver que ya hay un archivo con ese nombre, le asigne el siguiente según la numeración... :? Lo digo por si alguno está aburrido y quiere mirarlo... :)o

No sería difícil contar los archivos que hay y numerar a partir de ahí. El problema es que hasta que exiftool no decide a que carpeta lo manda mirando la fecha del archivo no sabemos en que carpeta hay que contar. En resumen que lo bonito del script tal como estaba al principio es que exiftool hace todo en un paso, ver la fecha de la foto y crear la carpeta si es necesario y meter las fotos en ella. Tengo que estudiar mejor el exiftool a ver si se me escapa alguna posibilidad, de lo contrario es mejor replantearse el script desde el principio para que exiftool solo obtenga la fecha, y el resto lo hagamos con bash .

Título: Re: Script para ordenar las fotos en carpetas usando exiftool
Publicado por: Medyr en 05 sep 2011, 07:33 am
Juuueeee, a este paso, no solo te va a ordenar las fotos, también te va a preparar la cena mientras y te va a dar un masaje en el cuello y otro en los pies  :o
Título: Re: Script para ordenar las fotos en carpetas usando exiftool
Publicado por: redy en 05 sep 2011, 07:33 am
El problema es que hasta que exiftool no decide a que carpeta lo manda mirando la fecha del archivo no sabemos en que carpeta hay que contar. En resumen que lo bonito del script tal como estaba al principio es que exiftool hace todo en un paso, ver la fecha de la foto y crear la carpeta si es necesario y meter las fotos en ella. Tengo que estudiar mejor el exiftool a ver si se me escapa alguna posibilidad, de lo contrario es mejor replantearse el script desde el principio para que exiftool solo obtenga la fecha, y el resto lo hagamos con bash .

Pues creo que se me escapaba. Podemos usar %1.4C en el nombre para darle un numero secuencial de cuatro cifras comenzando en 1 y creo que funcionaría. Prueba a ponerle %1.4C en donde poníamos $solonombre a ver si funciona.
Título: Re: Script para ordenar las fotos en carpetas usando exiftool
Publicado por: invisible en 05 sep 2011, 11:47 am
Pues creo que se me escapaba. Podemos usar %1.4C en el nombre para darle un numero secuencial de cuatro cifras comenzando en 1 y creo que funcionaría. Prueba a ponerle %1.4C en donde poníamos $solonombre a ver si funciona.

En cuanto tenga un rato lo pruebo... ahora voy apurado...
Muchísimas gracias. q:)
Título: Re: Script para ordenar las fotos en carpetas usando exiftool
Publicado por: redy en 08 sep 2011, 16:28 pm
Código: [Seleccionar]
#! /bin/sh
#
#  Las siguientes dos variables pueden ser ajustadas segun tus preferencias
#
#  DIR es el directorio padera a dónde se van a mover las fotos se crearán
#  subcarpetas para el año, mes y día_Motivo. Si quieres otra estructura
#  distinta deberás modificar el comando exiftool.
#
#  EXT son las extensiones que se verán afectadas, normalmente jpg y el raw
#  de tu cámara. Ponlo en mayúsculas y en minúsculas por si acaso.
#
DIR="/home/redy/Imágenes/Archivo"
EXT="jpg JPG jpeg JPEG nef NEF orf ORF raw RAW crw CRW cr2 CR2 dng DNG"
#
VAR=$(zenity --entry --text="Motivo fotográfico")
while (( $# >= 1 )); do
   NOMBRE="${1%.*}"
   for j in $EXT; do
     if [[ -f "${NOMBRE}.$j" ]]; then
      exiftool -Artist='Luis M. Portillo Barrera [portillobarrera@lavabit.com]'\
        -Copyright='Copyleft :) cc-by-sa Puedes copiar, distribuir, publicar y modificar esta fotografia bajo las condiciones expresadas en http://creativecommons.org/licenses/by-sa/3.0/es/' \
        '-Filename<'"$DIR/"'${DateTimeOriginal}'"${VAR:+_$VAR}"'%+.4c.%le' \
        -d "%Y/%m/%Y%m%d" -overwrite_original \
        "${NOMBRE}.$j"
     fi
   done
   shift
done


Lo he clarificado un poco poniendo el el -d solo lo que es formato de fecha y en el -filename todo lo demás. Ojo a la sucesión de comillas porque hay variables que serán procesadas por bash y esas van entre comillas dobles y otras que seran procesadas por exiftool y esas van entre comillas simples.

La línea '-Filename<'"$DIR/"'${DateTimeOriginal}'"${VAR:+_$VAR}"'%+.4c.%le' \ significa que meta todo en el directorio $DIR definido al principio, seguido del formato de fecha, que como lleva barras creará carpetas para año y mes, y dentro de estaas un nombre de fichero con año, mes y día concatenados, Luego el nombre de lo que se ha tecleado en la caja de la pregunta (prefijado con un _ a no ser que esté vacío). Y al final un número secuencial  de cuatro cifras que comienza en _0000 (%+.4c) y la extensión en minúscula (.%le). El número solo se incrementa si existe un archivo igual, esto quiere decir que los archivos con distintas extensiones si han sido procesados juntos tendrán el mismo número, y por tanto geeqie los seguirá agrupando.

(Si intento que empiece en 1 con %+4c sin el punto me crea un archivo sin número y el resto comenzando en 0001) :-(
Título: Re: Script para ordenar las fotos en carpetas usando exiftool
Publicado por: tomas.senabre en 05 oct 2011, 19:13 pm
Joer como avanza este script. Sólo una pregunta ¿porqué os cargáis la numeración que le pone la cámara?. Se puede mantener este nombre y a continuación poner el nombre del trabajo, te evitas el contador ¿no?.

Un beso guapos y guapas, cuanto tiempo...
Título: Re: Script para ordenar las fotos en carpetas usando exiftool
Publicado por: redy en 07 oct 2011, 09:24 am
Joer como avanza este script. Sólo una pregunta ¿porqué os cargáis la numeración que le pone la cámara?.

Ni idea, pregúntale al Invi. Yo dejo el nombre que pone la cámara, es más tengo la cámara ajustada para que aunque formatees la tarjeta siga con la numeración sin empezar de cero.
Título: Re: Script para ordenar las fotos en carpetas usando exiftool
Publicado por: tomas.senabre en 07 oct 2011, 19:13 pm
Pues eso Redy, yo también lo hago así. Que ganas de complicar la vida.

Un abrazo gallego que me alegro de verte y un beso a la familia ;)