Fecha de creación de conjunto recursivo de imágenes y videos según el nombre de archivo

0

Tengo una estructura de carpetas de miles de fotos y videos. Todos ellos se exportan y, por lo tanto, tienen la misma fecha y hora de creación. Me gustaría establecer la fecha de creación para todos los archivos de acuerdo con los nombres que tienen. Todos los archivos siguen la misma convención de nomenclatura y tienen la fecha y la hora en el nombre del archivo.

Ejemplo:

Pictures (top folder)
-- Folder 1
---- 2010-05-03
------ 2010-05-03 at 11-58-32.jpg
------ 2010-05-03 at 11-59-32.jpg
------ 2010-05-03 at 12-58-32.jpg
---- 2010-07-04
------ 2010-07-04 at 11-58-32.jpg
------ 2010-07-04 at 12-01-32.mov
-- Folder 2
---- 2090-03-03
------ 2010-03-03 at 10-01-32.jpg
------ 2010-03-03 at 11-01-32.jpg

Mi versión actual del código incluye el comando táctil y recursivo a través de la estructura de carpetas, pero parece que esto se atasca después de la primera vez que llego a la ruta más baja de la carpeta.

for dir in Pictures/*; do
    if [[ -d "$dir" ]]; then
    cd "$dir"
        for dir2 in *; do
            if [[ -d "$dir2" ]]; then
            cd "$dir2"
            for f in *; do
                t=$(echo $f | sed -E 's/([A-z]*-)|([A-z ,;])|(\..*)//g' | sed -E 's/(.*)(..)/./')
                touch -t $t "$f"
                done            
            cd -
            fi
        done
    cd -
    fi
done

También he pensado en el comando de búsqueda, pero no estoy seguro de cómo extraer la fecha y la hora del nombre de archivo para el comando táctil.

    
pregunta hausii 08.02.2015 - 21:27

1 respuesta

2

No estoy respondiendo directamente a su pregunta, pero es posible que desee considerar otro enfoque. La mayoría de las cámaras registran la fecha de creación dentro del archivo en Exif datos.

Hay muchas maneras de acceder a esto, pero hay una herramienta de línea de comando jhead enlace Esto funciona en muchas plataformas, y tiene la opción de extraer tiempos de Exif y realizar modificaciones basadas en éstas.

Tengo un flujo de trabajo de Automator (con jhead) para hacer esto con los elementos seleccionados (Hubiera pegado el flujo de trabajo, pero parece que no puedo hacerlo).

    
respondido por el Milliways 09.02.2015 - 01:24

Lea otras preguntas en las etiquetas