Bash
給定 EXIF 數據,如何重命名照片?
假設我有一堆照片,所有照片都有正確的 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