按 EXIF 資訊中的日期對影像進行排序和重新命名

按 EXIF 資訊中的日期對影像進行排序和重新命名

我的照片資料夾裡亂七八糟;我想根據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

相關內容