提问人:Sourav Kannantha B 提问时间:6/7/2023 更新时间:6/7/2023 访问量:416
根据名称中的日期对 Google 相册中的 WhatsApp 图像重新排序
Reorder WhatsApp images in Google Photos according to the dates in the name
问:
当我购买新的Android设备并在那里安装WhatsApp时,它从云端硬盘备份下载了所有媒体文件。现在,当我打开Google相册时,所有这1000 +图像都在同一日期,即下载日期。WhatsApp 图片不包含任何 EXIF 数据。但它们的名称本身包含日期 (IMG-20210101-WA0001)。有没有办法根据他们名字中的日期对它们进行排序?
答:
0赞
Sourav Kannantha B
6/7/2023
#1
我注意到 Google Files 应用程序会根据文件的修改日期对文件进行排序。所以我决定通过连接到 adb 来使用 shell 脚本修改所有文件的 mtime:
$ cd sdcard/
$ IFS=$'\n'
$ for f in $(find Android/media/com.whatsapp/WhatsApp/Media/ -type f | grep -E -v "/WhatsApp Documents/|/.Links/|/.Statuses/|/.nomedia|/.trashed")
> do
> old_t=$(date -r "$f" +%Y%m%d%H%M.%S%N)
> dt=$(cut -d- -f2 <<< $(basename "$f"))
> new_t=$(sed -E "s/.{8}/$dt/" <<< $old_t)
> touch -m -t $new_t "$f"
> done
上面的脚本将首先遍历 WhatsApp 文件夹中的所有文件(WhatsApp 文档除外,.链接。状态、.nomedia、.trashed 因为文件的名称中不包含日期)。然后获取文件的 mtime 值,从文件名中提取日期,替换 mtime 值中的日期部分并保留时间部分。最后,使用触摸,它会更新文件的 mtime 值。
对我来说,一旦脚本开始执行,更新所有文件的 mtime 需要半个多小时。但显然 Google 相册不使用 mtime 进行排序。
我注意到当我访问文件时,atime 没有更新。当我检查时,安装了.在这些情况下,我读过的某个地方,atime 用于存储文件的创建时间。所以我决定再次以相同的方式修改所有文件的时间:storage/emulated/0
noatime
$ cd sdcard/
$ IFS=$'\n'
$ for f in $(find Android/media/com.whatsapp/WhatsApp/Media/ -type f | grep -E -v "/WhatsApp Documents/|/.Links/|/.Statuses/|/.nomedia|/.trashed")
> do
> x1=$(stat --format %X "%f")
> x2=$(stat --format %x "%f")
> old_t=$(date -d "@$x1.$(cut -d. -f2 <<< $(cut -d' ' -f2 <<< $x2))" +%Y%m%d%H%M.%S%N)
> dt=$(cut -d- -f2 <<< $(basename "$f"))
> new_t=$(sed -E "s/.{8}/$dt/" <<< $old_t)
> touch -a -t $new_t "$f"
> done
上面的脚本在大多数情况下与上一个脚本的工作方式相同。虽然没有必要,但我已将旧时间的值保留到纳秒,并且刚刚替换了日期部分。
最后,Google 相册中的照片现在按正确的顺序排序。
评论