photofranky Publicado 19 de Abril de 2010 Compartir Publicado 19 de Abril de 2010 Webnas. Este es un script en bash que estoy utilizando para procesar las tomas del directorio DCIM de la tarjeta de mi D90. Hace uso de los programas ufraw y exiftool, por lo que deberán estar instalados en la máquina. Trata de simplificar el preprocesado de las tomas realizadas. Es el comienzo del flujo de trabajo que me he impuesto para llevar un poco organizado todo este barullo que se va formando después de llenar y descargar cuatro o cinco veces una tarjeta de 4Gb. Para empezar, intento realizar las tomas en RAW, aunque a veces te ves en la necesidad de tirar en JPG. Intento también en la medida de lo posible utilizar las 'carpetas activas' para que las tomas estén un poco organizadas en el directorio DCIM. El script crea un archivo en el directorio /home/nombre_usuario/NIKON D90 con el formato aaaammdd_hhmm siendo aaaammdd_hhmm la fecha y hora en la que se produce la descarga de la tarjeta en el destino. Una vez realizada la descarga hace un barrido por todo los directorios buscando archivos *.NEF, si los encuentra crea un directorio por cada fecha de toma distinta que encuentra en el formato aaaammdd. Bajo el directorio aaaammdd crearemos un directorio NEF y otro nefAjpg, en NEF quedarán almacenadas todas las tomas, en el nefAjpg todas las tomas NEF procesadas por ufraw-batch. Si además encontrara archivos JPG, creará un directorio jpg donde almacenará todas estas tomas. Una vez realizado éste trabajo, utilizando dolphin, konqueror (uso kde), o cualquier gestor de archivos podemos ya reorganizarlo a nuestro gusto. Estos son los listados de la tarjeta de memoria fk@debian-adl:~$ ls -R /media/NIKON\ D90/DCIM/ /media/NIKON D90/DCIM/: 100NCD90 101_____ 102BB___ <--------------------- directorio en la tarjeta /media/NIKON D90/DCIM/100NCD90: _DSC0001.NEF _DSC0002.NEF _DSC0003.JPG <--------------------- Archivos /media/NIKON D90/DCIM/101_____: _DSC0001.NEF _DSC0002.NEF _DSC0003.JPG _DSC0004.JPG /media/NIKON D90/DCIM/102BB___: _DSC0001.JPG _DSC0002.JPG _DSC0003.NEF y estos los listados después del procesado fk@debian-adl:~$ ls -R /home/fk/NIKON\ D90/ /home/fk/NIKON D90/: 20100419_2328 <------------------- directorio fecha descarga /home/fk/NIKON D90/20100419_2328: 100NCD90 101_____ 102BB___ <-------------------- directorios /home/fk/NIKON D90/20100419_2328/100NCD90: 20100419 <-------------------- directorio fecha de toma /home/fk/NIKON D90/20100419_2328/100NCD90/20100419: jpg NEF nefAjpg <-------------------- directorios de procesado /home/fk/NIKON D90/20100419_2328/100NCD90/20100419/jpg: _DSC0003.JPG <-------------------- una toma jpg al dir jpg /home/fk/NIKON D90/20100419_2328/100NCD90/20100419/NEF: _DSC0001.NEF _DSC0002.NEF <--------------------- tomas NEF al dir NEF /home/fk/NIKON D90/20100419_2328/100NCD90/20100419/nefAjpg: _DSC0001.jpg _DSC0002.jpg <--------------------- procesadas a nefAjpg /home/fk/NIKON D90/20100419_2328/101_____: <---------- etc, etc, etc. 20100419 /home/fk/NIKON D90/20100419_2328/101_____/20100419: jpg NEF nefAjpg /home/fk/NIKON D90/20100419_2328/101_____/20100419/jpg: _DSC0003.JPG _DSC0004.JPG /home/fk/NIKON D90/20100419_2328/101_____/20100419/NEF: _DSC0001.NEF _DSC0002.NEF /home/fk/NIKON D90/20100419_2328/101_____/20100419/nefAjpg: _DSC0001.jpg _DSC0002.jpg /home/fk/NIKON D90/20100419_2328/102BB___: 20100419 /home/fk/NIKON D90/20100419_2328/102BB___/20100419: jpg NEF nefAjpg /home/fk/NIKON D90/20100419_2328/102BB___/20100419/jpg: _DSC0001.JPG _DSC0002.JPG /home/fk/NIKON D90/20100419_2328/102BB___/20100419/NEF: _DSC0003.NEF /home/fk/NIKON D90/20100419_2328/102BB___/20100419/nefAjpg: _DSC0003.jpg Espero que sea útil. Recuerda. El programa es TAL CUAL, sin garantías de ningún tipo, así que pruebalo con tomas de prueba. Y aquí el script #!/bin/bash #------------------------------------------- # script : ProcessDCIM # version : 0.1b # author : frankysoft - photofranky # #------------------------------------------- muestra_version () { clear cat <<EOF Copyright ©2010 frankysoft - photofranky. <URL:mailto:[email protected]> version 0.1b EOF } muestra_licencia () { muestra_version cat <<EOF #-------------------------------------------------------------------------- # Copyright 2010-Today frankysoft - photofranky # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # #-------------------------------------------------------------------------- EOF } muestra_licencia echo echo echo "Bloquea la tarjeta DCIM contra escritura e insértala en el puerto USB" echo "Pulsa una tecla para continuar" read k echo "empezamos ..." #--------------------------- # Declaración de variables #--------------------------- store_dir="/home/fk/NIKON D90/" # Directorio de almacenamiento usb_dir="/media/NIKON D90/DCIM/" # Ruta a las tomas cnv_dir="nefAjpg" # Directorio donde serán guardados lo archivos convertidos. wrk_dir=`date +'%Y%m%d_%H%M'` # Directorio con la fecha de las descarga formato aaaammdd_hhmm raw_type="NEF" clear convertFile() { #-------------------------------------------------------------------------------------- # convertFile toma todos los RAW existente en el directorio y los convierte a jpg, # creando directorios por fecha de captura, a su vez mueve todos los RAW al directorio # RAW de la fecha de captura #-------------------------------------------------------------------------------------- for f in *."$raw_type" ; do # Obtenmos la fecha de la captura date_shoot=`exiftool "$f" | grep -m 1 Create` shoot_date=`expr substr "$date_shoot" 35 10` shoot_date=${shoot_date//:} #comprobamos si ya existen tomas de ese día if [ ! -d "$shoot_date" ] then # Creamos el directorio de fecha de toma echo "Creando directorio $shoot_date" mkdir "$shoot_date" # Creamos el almacén para los RAW echo "Creando directorio $shoot_date/$raw_type" mkdir "$shoot_date/$raw_type" # Creamos el almacén para los convertidos echo "Creando directorio $shoot_date/$cnv_dir" mkdir "$shoot_date/$cnv_dir" fi echo "Convirtiendo $f" ufraw-batch \ --wb=camera \ --exposure=auto \ --out-type=jpeg \ --compression=96 \ --size=1024 \ --out-path=./"$shoot_date/$cnv_dir" \ --silent \ $f # Movemos RAW al directorio RAW echo "Moviendo $f al directorio $raw_type" mv "$f" "$shoot_date/$raw_type/." done } moveJPG () { #-------------------------------------------------------------------------------------------------------- # Hace un barrido por todo el directorio en busca de archivos jpg, mira su fecha de captura y los mueve al # directorio correspondiente #--------------------------------------------------------------------------------------------------------- for f in *.JPG ; do # Obtenmos la fecha de la captura date_shoot=`exiftool "$f" | grep -m 1 Create` shoot_date=`expr substr "$date_shoot" 35 10` shoot_date=${shoot_date//:} #comprobamos si ya existen tomas de ese día if [ ! -d "$shoot_date" ] ; then echo "Creando el directorio $shoot_date" mkdir "$shoot_date" fi if [ ! -d "$shoot_date/jpg" ] ; then # Creamos el almacén para los jpg echo "Creando el directorio $shoot_date/jpg" mkdir "$shoot_date/jpg" fi mv "$f" "$shoot_date/jpg/." done } # PASO 1 : Volcado de los datos de memoria al directorio de trabajo #----------------------------------------------------------------------- # Si no existe el directorio de almacenamiento, lo creamos if [ ! -d "$store_dir" ] ; then echo "Creando el directorio $store_dir" mkdir "$store_dir" fi # Nos posicionamos en el directorio de almacenamiento cd "$store_dir" # Si no existe el directorio de trabajo, lo creamos if [ ! -d "$wrk_dir" ] ; then echo "Creando el directorio de trabajo $wrk_dir" mkdir "$wrk_dir" fi # Nos posicionamos en el directorio de trabajo cd "$wrk_dir" # Realizamos la copia echo "Copiando los datos desde la tarjeta de memoria $usb_dir al directorio $wrk_dir." echo "Éste proceso podría tardar. Por favor espere ... " cp -R "$usb_dir"* . echo "Terminamdo el volcado de datos. Comenzamos con el procesado ..." # PASO 2 : Procesado de los archivos copiados #-------------------------------------------- # Buscamos posibles directorios en los datos volcados for d in $(find . -type d) ; do if [ "$d" != "." ] ; then #Nos saltamos el directorio raiz # Los directorios estarán en $d con el formato ./nombreDirectorio, primero suprimiremos ./ d=`expr substr "$d" 3 length "$d"}` echo "Encontrado el directorio $d" # PASO 2-1 : Procesamos el directorio #------------------------------------ # Nos posicionamos en el directorio echo "Entrando en el directorio $d" cd "$d" # Realizamos la conversión y la ordenación # Comenzamos por los RAW ls *."$raw_type" &> /dev/null if [ $? -eq 0 ] ; then convertFile fi # Ordenamos los jpg's ls *.JPG &> /dev/null if [ $? -eq 0 ] ; then moveJPG fi # Salimos del directorio cd .. fi done # Procesamos los posibles ficheros del directorio raiz # Comenzamos por los RAW ls *."$raw_type" &> /dev/null if [ $? -eq 0 ] ; then convertFile fi # Ordenamos los jpg's ls *.JPG &> /dev/null if [ $? -eq 0 ] ; then moveJPG fi exit # fin del script, en la línea anterior recuerda chmod +x processDCIM.sh ./processDCIM Enlace al comentario Compartir en otros sitios web Mas opciones de compartir...
pacodani Publicado 18 de Mayo de 2010 Compartir Publicado 18 de Mayo de 2010 MUY MUY MUY bueno!!! Gracias mil por el script, sin duda lo usaré o me inspirará para adaptarlo a mi gusto. Gracias! Webnas. Este es un script en bash que estoy utilizando para procesar las tomas del directorio DCIM de la tarjeta de mi D90. Hace uso de los programas ufraw y exiftool, por lo que deberán estar instalados en la máquina. Trata de simplificar el preprocesado de las tomas realizadas. Es el comienzo del flujo de trabajo que me he impuesto para llevar un poco organizado todo este barullo que se va formando después de llenar y descargar cuatro o cinco veces una tarjeta de 4Gb. Para empezar, intento realizar las tomas en RAW, aunque a veces te ves en la necesidad de tirar en JPG. Intento también en la medida de lo posible utilizar las 'carpetas activas' para que las tomas estén un poco organizadas en el directorio DCIM. El script crea un archivo en el directorio /home/nombre_usuario/NIKON D90 con el formato aaaammdd_hhmm siendo aaaammdd_hhmm la fecha y hora en la que se produce la descarga de la tarjeta en el destino. Una vez realizada la descarga hace un barrido por todo los directorios buscando archivos *.NEF, si los encuentra crea un directorio por cada fecha de toma distinta que encuentra en el formato aaaammdd. Bajo el directorio aaaammdd crearemos un directorio NEF y otro nefAjpg, en NEF quedarán almacenadas todas las tomas, en el nefAjpg todas las tomas NEF procesadas por ufraw-batch. Si además encontrara archivos JPG, creará un directorio jpg donde almacenará todas estas tomas. Una vez realizado éste trabajo, utilizando dolphin, konqueror (uso kde), o cualquier gestor de archivos podemos ya reorganizarlo a nuestro gusto. Estos son los listados de la tarjeta de memoria fk@debian-adl:~$ ls -R /media/NIKON\ D90/DCIM/ /media/NIKON D90/DCIM/: 100NCD90 101_____ 102BB___ <--------------------- directorio en la tarjeta /media/NIKON D90/DCIM/100NCD90: _DSC0001.NEF _DSC0002.NEF _DSC0003.JPG <--------------------- Archivos /media/NIKON D90/DCIM/101_____: _DSC0001.NEF _DSC0002.NEF _DSC0003.JPG _DSC0004.JPG /media/NIKON D90/DCIM/102BB___: _DSC0001.JPG _DSC0002.JPG _DSC0003.NEF y estos los listados después del procesado fk@debian-adl:~$ ls -R /home/fk/NIKON\ D90/ /home/fk/NIKON D90/: 20100419_2328 <------------------- directorio fecha descarga /home/fk/NIKON D90/20100419_2328: 100NCD90 101_____ 102BB___ <-------------------- directorios /home/fk/NIKON D90/20100419_2328/100NCD90: 20100419 <-------------------- directorio fecha de toma /home/fk/NIKON D90/20100419_2328/100NCD90/20100419: jpg NEF nefAjpg <-------------------- directorios de procesado /home/fk/NIKON D90/20100419_2328/100NCD90/20100419/jpg: _DSC0003.JPG <-------------------- una toma jpg al dir jpg /home/fk/NIKON D90/20100419_2328/100NCD90/20100419/NEF: _DSC0001.NEF _DSC0002.NEF <--------------------- tomas NEF al dir NEF /home/fk/NIKON D90/20100419_2328/100NCD90/20100419/nefAjpg: _DSC0001.jpg _DSC0002.jpg <--------------------- procesadas a nefAjpg /home/fk/NIKON D90/20100419_2328/101_____: <---------- etc, etc, etc. 20100419 /home/fk/NIKON D90/20100419_2328/101_____/20100419: jpg NEF nefAjpg /home/fk/NIKON D90/20100419_2328/101_____/20100419/jpg: _DSC0003.JPG _DSC0004.JPG /home/fk/NIKON D90/20100419_2328/101_____/20100419/NEF: _DSC0001.NEF _DSC0002.NEF /home/fk/NIKON D90/20100419_2328/101_____/20100419/nefAjpg: _DSC0001.jpg _DSC0002.jpg /home/fk/NIKON D90/20100419_2328/102BB___: 20100419 /home/fk/NIKON D90/20100419_2328/102BB___/20100419: jpg NEF nefAjpg /home/fk/NIKON D90/20100419_2328/102BB___/20100419/jpg: _DSC0001.JPG _DSC0002.JPG /home/fk/NIKON D90/20100419_2328/102BB___/20100419/NEF: _DSC0003.NEF /home/fk/NIKON D90/20100419_2328/102BB___/20100419/nefAjpg: _DSC0003.jpg Espero que sea útil. Recuerda. El programa es TAL CUAL, sin garantías de ningún tipo, así que pruebalo con tomas de prueba. Y aquí el script #!/bin/bash #------------------------------------------- # script : ProcessDCIM # version : 0.1b # author : frankysoft - photofranky # #------------------------------------------- muestra_version () { clear cat <<EOF Copyright ©2010 frankysoft - photofranky. <URL:mailto:[email protected]> version 0.1b EOF } muestra_licencia () { muestra_version cat <<EOF #-------------------------------------------------------------------------- # Copyright 2010-Today frankysoft - photofranky # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # #-------------------------------------------------------------------------- EOF } muestra_licencia echo echo echo "Bloquea la tarjeta DCIM contra escritura e insértala en el puerto USB" echo "Pulsa una tecla para continuar" read k echo "empezamos ..." #--------------------------- # Declaración de variables #--------------------------- store_dir="/home/fk/NIKON D90/" # Directorio de almacenamiento usb_dir="/media/NIKON D90/DCIM/" # Ruta a las tomas cnv_dir="nefAjpg" # Directorio donde serán guardados lo archivos convertidos. wrk_dir=`date +'%Y%m%d_%H%M'` # Directorio con la fecha de las descarga formato aaaammdd_hhmm raw_type="NEF" clear convertFile() { #-------------------------------------------------------------------------------------- # convertFile toma todos los RAW existente en el directorio y los convierte a jpg, # creando directorios por fecha de captura, a su vez mueve todos los RAW al directorio # RAW de la fecha de captura #-------------------------------------------------------------------------------------- for f in *."$raw_type" ; do # Obtenmos la fecha de la captura date_shoot=`exiftool "$f" | grep -m 1 Create` shoot_date=`expr substr "$date_shoot" 35 10` shoot_date=${shoot_date//:} #comprobamos si ya existen tomas de ese día if [ ! -d "$shoot_date" ] then # Creamos el directorio de fecha de toma echo "Creando directorio $shoot_date" mkdir "$shoot_date" # Creamos el almacén para los RAW echo "Creando directorio $shoot_date/$raw_type" mkdir "$shoot_date/$raw_type" # Creamos el almacén para los convertidos echo "Creando directorio $shoot_date/$cnv_dir" mkdir "$shoot_date/$cnv_dir" fi echo "Convirtiendo $f" ufraw-batch \ --wb=camera \ --exposure=auto \ --out-type=jpeg \ --compression=96 \ --size=1024 \ --out-path=./"$shoot_date/$cnv_dir" \ --silent \ $f # Movemos RAW al directorio RAW echo "Moviendo $f al directorio $raw_type" mv "$f" "$shoot_date/$raw_type/." done } moveJPG () { #-------------------------------------------------------------------------------------------------------- # Hace un barrido por todo el directorio en busca de archivos jpg, mira su fecha de captura y los mueve al # directorio correspondiente #--------------------------------------------------------------------------------------------------------- for f in *.JPG ; do # Obtenmos la fecha de la captura date_shoot=`exiftool "$f" | grep -m 1 Create` shoot_date=`expr substr "$date_shoot" 35 10` shoot_date=${shoot_date//:} #comprobamos si ya existen tomas de ese día if [ ! -d "$shoot_date" ] ; then echo "Creando el directorio $shoot_date" mkdir "$shoot_date" fi if [ ! -d "$shoot_date/jpg" ] ; then # Creamos el almacén para los jpg echo "Creando el directorio $shoot_date/jpg" mkdir "$shoot_date/jpg" fi mv "$f" "$shoot_date/jpg/." done } # PASO 1 : Volcado de los datos de memoria al directorio de trabajo #----------------------------------------------------------------------- # Si no existe el directorio de almacenamiento, lo creamos if [ ! -d "$store_dir" ] ; then echo "Creando el directorio $store_dir" mkdir "$store_dir" fi # Nos posicionamos en el directorio de almacenamiento cd "$store_dir" # Si no existe el directorio de trabajo, lo creamos if [ ! -d "$wrk_dir" ] ; then echo "Creando el directorio de trabajo $wrk_dir" mkdir "$wrk_dir" fi # Nos posicionamos en el directorio de trabajo cd "$wrk_dir" # Realizamos la copia echo "Copiando los datos desde la tarjeta de memoria $usb_dir al directorio $wrk_dir." echo "Éste proceso podría tardar. Por favor espere ... " cp -R "$usb_dir"* . echo "Terminamdo el volcado de datos. Comenzamos con el procesado ..." # PASO 2 : Procesado de los archivos copiados #-------------------------------------------- # Buscamos posibles directorios en los datos volcados for d in $(find . -type d) ; do if [ "$d" != "." ] ; then #Nos saltamos el directorio raiz # Los directorios estarán en $d con el formato ./nombreDirectorio, primero suprimiremos ./ d=`expr substr "$d" 3 length "$d"}` echo "Encontrado el directorio $d" # PASO 2-1 : Procesamos el directorio #------------------------------------ # Nos posicionamos en el directorio echo "Entrando en el directorio $d" cd "$d" # Realizamos la conversión y la ordenación # Comenzamos por los RAW ls *."$raw_type" &> /dev/null if [ $? -eq 0 ] ; then convertFile fi # Ordenamos los jpg's ls *.JPG &> /dev/null if [ $? -eq 0 ] ; then moveJPG fi # Salimos del directorio cd .. fi done # Procesamos los posibles ficheros del directorio raiz # Comenzamos por los RAW ls *."$raw_type" &> /dev/null if [ $? -eq 0 ] ; then convertFile fi # Ordenamos los jpg's ls *.JPG &> /dev/null if [ $? -eq 0 ] ; then moveJPG fi exit # fin del script, en la línea anterior recuerda chmod +x processDCIM.sh ./processDCIM Enlace al comentario Compartir en otros sitios web Mas opciones de compartir...
Publicaciones recomendadas
Archivado
Este tema ahora está archivado y cerrado a otras respuestas.