
我的照片資料夾裡亂七八糟;我想根據EXIF資訊中的日期對它們進行排序,並根據日期重新命名(如001.jpg、002.jpg等)。
我怎麼能在 Linux 中做到這一點?我之前曾使用 ImageMagick 執行一些基本的批次處理任務(轉換和調整大小等),是否可以使用它來執行此任務?
答案1
您可以使用exif工具。由於某種原因,線上手冊不包含給我提供基本提示的「重新命名範例」部分。
對於僅 JPG 文件,以下命令調用應該可以完成這項工作:
exiftool -r '-FileName<CreateDate' -d '%Y-%m-%d/%H_%M_%S%%-c.%%le' <yourFolder>
解釋:
-r
用於遞迴'-FileName<CreateDate'
告訴 exiftool 根據其 EXIF 標籤重新命名檔案CreateDate
(您可以嘗試其他類似的ModifyDate
方法)-d '%Y-%m-%d/%H_%M_%S%%-c.%%le'
告訴如何從日期來源「CreateDate
」建立檔案名稱字串(「%-c
」將在檔案衝突的情況下附加一個計數器,「%le
」代表「小寫檔案副檔名」)- 筆記:我
-FileName<...
在這裡使用“ ”來重命名文件並在一步內將其移動到另一個資料夾。手冊指出必須使用「-Directory<...
」語法進行資料夾操作。不過,這種方式對我有用。
您應該花一些時間閱讀這個強大工具的手冊。也許還有更短的方法:D
答案2
試試這個免費產品:AmoK Exif 分類器。
答案3
最簡單的方法是將檔案匯入 jbrout ...然後(可選)所有檔案都可以將名稱變更為面向時間的名稱。或者您可能會發現,您根本不需要更改名稱(jbrout 就足夠了)。
答案4
要使其在 Debian Lenny 中工作,請嘗試以下操作:
import pyexiv2, sys, os, time, datetime, random
dirname = sys.argv[1]
flist=os.listdir(dirname)
dic = dict()
for fname in flist:
image = pyexiv2.Image(sys.argv[1]+'/'+fname)
#metadata = pyexiv2.ImageMetadata(sys.argv[1]+'/'+fname)
#metadata.read()
image.readMetadata()
tag = image['Exif.Image.DateTime']
timestamp = int(time.mktime(tag.timetuple()))
#print fname, ' ', tag.value, ' ', timestamp
try:
dic[timestamp] = fname
except:
print fname, ' not processed.'
keys = dic.keys()
keys.sort()
i = 0
for k in keys:
os.rename(sys.argv[1]+'/'+dic[k], sys.argv[1]+'/'+str(i)+'.jpg')
i+=1