Exiftool 또는 PDFtk를 사용하여 파일 이름에서 PDF 메타데이터 쓰기

Exiftool 또는 PDFtk를 사용하여 파일 이름에서 PDF 메타데이터 쓰기

이 형식으로 이름이 지정된 수천 개의 PDF 파일이 있습니다.

Author Year Title of the book

처음 두 공백은 관련이 있습니다. 저자, 연도 및 제목을 구분합니다. 제목에는 공백이 여러 개 포함될 수 있습니다. 쓸 대본을 찾고 있어요작가도착하다작가PDF의 메타필드, 제목 간, 연도별 메타데이터. Exiftool은 제가 본 모든 도구 중에서 가장 유망한 것 같습니다.

도와주세요?

답변1

일부 EXIF ​​조작 도구에는 EXIF ​​데이터를 기반으로 파일 이름을 바꾸는 방법이 내장되어 있지만 이 작업을 반대로 수행하는 도구는 본 적이 없습니다. 따라서 쉘이 파일 이름의 올바른 부분을 사용하여 프로그램을 호출하도록 하십시오. 이는 하나의 파일만 처리하는 스크립트입니다(이름을 스크립트에 유일한 인수로 전달).

#!/bin/sh
title=${1##*/}
author=${title%% *}; title=${title#* }
year=${title%% *}; title=${title#* }
exiftool -Author="$author" -Title="$title" -CreateDate="$year" "$1"

설명: 제가 사용하는매개변수 확장 구조몇 가지 기본 문자열 조작을 수행합니다. 기본 이름(마지막 이름 뒤에 /) 을 첫 번째 공백 앞에 놓고 해당 title부분 을 제거합니다 .authortitle

디렉터리의 모든 파일을 처리하려면 이 코드를 루프에 넣으세요.

#!/bin/sh
for filename in *\ *\ *.pdf; do
  title=${filename##*/}
  author=${title%% *}; title=${title#* }
  year=${title%% *}; title=${title#* }
  exiftool -Author="$author" -Title="$title" -CreateDate="$year" "$filename"
done

디렉터리와 해당 하위 디렉터리의 모든 파일을 재귀적으로 처리하려면 find.

find /path/to/top/directory -name '* * *.pdf' -type f -exec sh -c '
  for filename do
  done
' _ {} +

관련 정보