Bash

給定 EXIF 數據,如何重命名照片?

  • December 19, 2019

假設我有一堆照片,所有照片都有正確的 EXIF 資訊,並且照片是隨機命名的(因為我遇到了一個問題)。我有一個小程序jhead,它給了我以下輸出:

$ jhead IMG_9563.JPG

File name    : IMG_9563.JPG
File size    : 638908 bytes
File date    : 2011:02:03 20:25:09
Camera make  : Canon
Camera model : Canon PowerShot SX210 IS
Date/Time    : 2011:02:03 20:20:24
Resolution   : 1500 x 2000
Flash used   : Yes (manual)
Focal length :  5.0mm  (35mm equivalent: 29mm)
CCD width    : 6.17mm
Exposure time: 0.0080 s  (1/125)
Aperture     : f/3.1
Focus dist.  : 0.29m
ISO equiv.   : 125
Exposure bias: -1.67
Whitebalance : Manual
Light Source : Daylight
Metering Mode: pattern
Exposure Mode: Manual

現在我需要將文件夾中的所有照片重命名為以下格式:

001.JPG
002.JPG
003.JPG
...

次要編號將是較舊的圖像,而最大值是較新的圖像。

我的腳本不太好,所以我正在尋求幫助。

我覺得一個 bash 腳本就足夠了,但是如果你覺得更舒服,你可以寫一個 python 腳本。

我的想法是:

$ mv IMG_9563.JPG `jhead IMG_9563.JPG | grep date`

但我不知道如何一次對所有文件執行此操作。

您可以使用 for 循環(在 shell/shell 腳本中)對所有文件執行此操作:

for i in *.JPG; do
 j=`jhead "$i" | grep date | sed 's/^File date[^:]\+: \(.\+\)$/\1/'`.jpg
 echo mv -i "$i" "$j"
done

這只是一個非常基本的大綱。echo當您確認一切都按預期工作時刪除。

剛剛在這裡發現 jhead 可以為你做這一切!:)

jhead -autorot -nf%Y-%m-%d_%H-%M-%S *.jpg

引用自:https://unix.stackexchange.com/questions/6998