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.