0 votos

Establecer de forma recursiva la fecha de creación de las imágenes y los vídeos en función del nombre del archivo

Tengo una estructura de carpetas con miles de fotos y vídeos. Todos ellos están exportados y por lo tanto tienen la misma fecha de creación, la hora. Me gustaría establecer la fecha de creación de 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 touch y voy recursivamente a través de la estructura de carpetas, pero esto parece atascarse después de la primera vez que llego a la ruta de la carpeta más baja.

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/(.*)(..)/\1.\2/')
                touch -t $t "$f"
                done            
            cd -
            fi
        done
    cd -
    fi
done

También he pensado en el comando find, pero no estoy seguro de cómo extraer entonces la fecha y la hora del nombre del archivo para el comando touch.

2voto

Milliways Puntos 1548

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

Hay muchas formas de acceder a esto, pero hay una herramienta de línea de comandos jhead http://www.sentex.net/~mwandel/jhead/ Funciona en muchas plataformas, y tiene la opción de extraer los tiempos Exif y realizar modificaciones basadas en ellos.

Tengo un flujo de trabajo de Automator (usando jhead) para hacer esto para los elementos seleccionados Workflow (Habría pegado el flujo de trabajo, pero no puedo hacerlo).

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X