
내 사진 폴더가 엉망이 되었습니다. EXIF 정보에서 날짜순으로 정렬하고 날짜순으로 이름을 바꾸고 싶습니다(예: 001.jpg, 002.jpg 등).
Linux에서 이 작업을 어떻게 수행할 수 있나요? 이전에 몇 가지 기본적인 대량 처리 작업(변환 및 크기 조정 등)에 ImageMagick을 사용한 적이 있습니다. 이 작업에 ImageMagick을 사용할 수 있습니까?
답변1
당신이 사용할 수있는엑시프툴. 어떤 이유로 온라인 매뉴얼에는 나에게 필수적인 힌트를 제공하는 "예제 이름 바꾸기" 섹션이 포함되어 있지 않습니다.
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