img2pdf: 페이지를 올바른 순서로 가져오기

img2pdf: 페이지를 올바른 순서로 가져오기

img2pdf수백 개의 이미지를 매우 빠르게 처리하고 다음과 같은 명령을 사용하여 PDF로 만들 수 있습니다.

img2pdf *.tif -o out.pdf

하지만 내 경우에는 페이지 순서가 잘못되었습니다. konsoleKubuntu 20.04에서 이 명령을 실행했습니다 .

이미지 파일은 다음 형식으로 이름이 지정됩니다(돌핀 파일 관리자에서 이름이 변경됨).

Vol_1.tif
Vol_2.tif
Vol_3.tif
...
Vol_430.tif

생성된 PDF는 호출되는 파일/페이지에서 시작합니다. Vol_100.tif이는 의미가 있습니다(1 또는 11 앞에 100이 표시됨). 그러면 호출 뒤에 있는 사람 Vol_119.tif은 이고 Vol_11.tif, Vol_129.tif뒤에 있는 사람은 Vol_12.tif... Vol_189.tif뒤에 있는 사람은 입니다 Vol_18.tif.

어떻게 진행하나요?

답변1

가장 좋은 방법은 Perl 유틸리티를 사용하여 파일 이름을 바꾸어 모두가 동일한 수의 0으로 채워진 숫자 ( , , rename등을 포함한 배포판마다 다른 이름 )를 갖도록 하는 것입니다. 예를 들어:perl-renameprenamefile-rename

rename -n 's/^(Vol_)(\d+)/sprintf "%s%03i", $1, $2/e' Vol_*.tif

세 자리 제로 패딩이 충분하지 않은 경우 또는 %03i로 변경하세요 %04i.%05i

-n옵션을 사용하면 이름이 바뀌는 항목만 표시됩니다. 원하는 대로 작동한다고 확신하는 경우 제거하여 -n파일 이름을 자동으로 바꾸거나(오류 외에는 출력되지 않음) -v자세한 작업으로 바꾸십시오.

를 사용하면 -v다음과 같은 출력이 표시됩니다.

$ rename -v 's/^(Vol_)(\d+)/sprintf "%s%03i", $1, $2/e' Vol_*.tif
Vol_1.tif renamed as Vol_001.tif
Vol_2.tif renamed as Vol_002.tif
Vol_50.tif renamed as Vol_050.tif
Vol_60.tif renamed as Vol_060.tif

find또 다른 옵션은 파일 이름을 자연스럽게 정렬하는 것입니다. 따라서 GNU 및 (또는 NUL 구분 기호를 지원하는 다른 버전)을 sort사용해야 합니다 .xargs

예를 들어

find . -name 'Vol_*.tif' -print0 | sort -z -V | xargs -0r img2pdf -o out.pdf

GNU 정렬 -V옵션은 "버전" 정렬이며, 이는 자연 정렬의 이름입니다.

답변2

셸을 사용하여 올바른 순서로 파일 이름을 확장할 수 있습니다.

Bash에서 숫자 범위를 알고 있으면 중괄호 확장을 사용할 수 있습니다.

img2pdf Vol_{1..430}.tif -o out.pdf

또는 일반 와일드카드를 사용하고 먼저 한 자리 숫자를 원한다고 말하면 됩니다.

img2pdf Vol_?.tif Vol_??.tif Vol_???.tif -o out.pdf

관련 정보