回答:
EXIF処理ツールにexiv2
は、このための組み込みオプションがあります。
exiv2 -T rename image.jpg
最後のファイル変更時刻をmtime
、EXIFメタデータに保存されている日付に設定します 。
作成時間を使用するように要求しましたが、これはUnixライクなシステムでは使用されていません-それには正当な理由があります:https : //unix.stackexchange.com/questions/27297/why-doesnt-nix-keep-track -ファイル作成時間
create timeを呼び出す時間は実際にmtime
-そこに問題はないと確信しています。
からman exiv2
:
NAME
exiv2 - Image metadata manipulation tool
SYNOPSIS
exiv2 [options] [action] file ...
DESCRIPTION
exiv2 is a program to read and write Exif, IPTC and XMP image metadata and image com‐
ments. The following image formats are supported:
[ ... ]
mv | rename
Rename files and/or set file timestamps according to the Exif create time‐
stamp. Uses the value of tag Exif.Photo.DateTimeOriginal or, if not
present, Exif.Image.DateTime to determine the timestamp. The filename for‐
mat can be set with -r fmt, timestamp options are -t and -T.
[ ... ]
-T Only set the file timestamp according to the Exif create timestamp, do not
rename the file (overrides -k). This option is only used with the 'rename'
action. Note: On Windows you may have to set the TZ environment variable for
this option to work correctly.
-t
逆を行う
オプションを参照してください。
-t
。実際、実際に何を行うかのスーパーセットを行うよう-T
です。
CPANからexiftoolをインストールする場合、すべてのファイルが「all」というディレクトリにあると仮定して、次のスクリプトを実行できます。
#!/bin/sh
for i in all/*; do
SPEC=`exiftool -t -s -d "%Y-%m-%d %H:%M:%S" -CreateDate "$i"`
read X DATE <<<${SPEC}
echo "$i:$DATE"
touch -d "$DATE" "$i"
done
exiftool
「Volker Siegel」で述べたように、おそらくmtimeを意味すると仮定して、exiftools組み込み関数を単純に使用します。
のような:
$ exiftool "-DateTimeOriginal>FileModifyDate" test.jpg
これは、「exifフィールド "DateTimeOriginal"情報を取得し、それを使用してファイル "test.jpg"の変更された日付/時刻情報をファイルシステムに設定します。
$ ls -la test.jpg
-rw-r-----@ 1 user 18329968 2432451 14 Out 17:57 test.jpg
$ exiftool -DateTimeOriginal test.jpg
Date/Time Original : 2015:10:09 13:29:58
$ exiftool "-DateTimeOriginal>FileModifyDate" test.jpg
1 image files updated
$ ls -la test.jpg
-rw-r-----@ 1 user 18329968 2432451 9 Out 13:29 test.jpg
jhead
コマンドを使用して作成することもできます。
$ jhead -ft file.jpg
-dsft
です。-ft
逆を行います。
ExifToolは、日付/時刻のオリジナルまたはCreate Data EXIFタグの抽出など、ほとんどのEXIF情報を読み取って操作できます。この情報を使用して、ファイルの名前を変更したり、タイムスタンプを変更したりできます。例えば:
find -name '*.jpg' | while read PIC; do
DATE=$(exiftool -p '$DateTimeOriginal' $PIC |
sed 's/[: ]//g')
touch -t $(echo $DATE | sed 's/\(..$\)/\.\1/') $PIC
done
これにより、現在のディレクトリですべてのJPGファイルが検索され、タイムスタンプが更新されます。
それらのファイルにもその日付に基づいた名前を付けたい場合(これは便利になる傾向があります)mv -i $PIC $(dirname $PIC)/$DATE.jpg
、done
行の前にも追加します。