
写真フォルダがごちゃごちゃしているので、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<...
:ここでは、ファイルの名前を変更して 1 つの手順で別のフォルダーに移動するために" " を使用しました。マニュアルで-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