답변:
EXIF 처리 도구 exiv2
에는 다음과 같은 옵션이 내장되어 있습니다.
exiv2 -T rename image.jpg
마지막 파일 수정 시간을 mtime
EXIF 메타 데이터에 저장된 날짜로 설정합니다.
작성 시간을 사용하도록 요청했지만 유닉스 계열 시스템에서는 사용되지 않았으며 그 이유는 다음과 같습니다. https://unix.stackexchange.com/questions/27297/why-doesnt-nix-keep-track 파일 작성 시간
나는 당신이 생성 시간이라고 부르는 시간이 실제로 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
반대 작업을 수행하려면
옵션 을 참조하십시오 .
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
ExifTool은 날짜 / 시간 원본 추출 또는 데이터 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
.
jhead
명령을 사용하여 만들 수도 있습니다 .
$ jhead -ft file.jpg
-dsft
입니다. -ft
반대입니다.