Al mover archivos de un directorio a otro y de un PC a otro, la fecha de la última modificación suele restablecerse a la misma fecha de la operación de mover o copiar. Esto hace que los archivos no estén ordenados cronológicamente en algunas aplicaciones (Galería), lo que resulta bastante molesto, especialmente para imágenes y vídeos.
Normalmente, este tipo de archivos sigue la convención de nomenclatura IMG_YYYMMDD_HHMMSS.jpg para las imágenes y VID_YYYMMDD_HHMMSS.mp4 para los vídeos. Así que pensé en combinar touch
y la extracción de caracteres de los nombres de archivo, ya que la marca de tiempo forma parte del propio nombre del archivo.
Encontré este script en Cuartel general de Ephestione for i in IMG*.jpg; do busybox touch -t ${i:4:8}${i:13:4}.${i:17:2} $i; done
pero sólo funciona en terminal. Intenté hacer un script pero no funciona (ver abajo)
#!/system/bin/sh
#change timestamp for images filename IMG_YYYYMMDD_HHMMSS.jpg
for i in IMG_*.jpg
do
touch -t ${i:4:8}${i:13:4}.${i:17:2} $i
done
#change timestamp for whatsapp images IMG-YYYYMMDD-WAnnnn.jpg
for i in IMG-*WA*.jpg
do
touch -t ${i:4:8}1234 $i
done
#change timestamp for videos filename VID_YYYYMMDD_HHMMSS.mp4
for i in VID_*.jpg
do
touch -t ${i:4:8}${i:13:4}.${i:17:2} $i
done
#change timestamp for whatsapp videos IMG-YYYYMMDD-WAnnnn.mp4
for i in VID-*WA*.mp4
do
touch -t ${i:4:8}1234 $i
done
Idealmente me gustaría poner un script como este en el directorio DCIM o Pictures de nivel superior y que procese todas las Imágenes y Videos en los subdirectorios. Por supuesto estoy rooteado.