PDF에서 TIFF로의 변환을 병렬로 실행하는 방법은 무엇입니까?

PDF에서 TIFF로의 변환을 병렬로 실행하는 방법은 무엇입니까?

.bat 를 사용하여 PDF 문서(처음 2페이지)를 TIFF 파일로 일괄 변환하는 명령이 여기에 있습니다 pdftoppm.

목표는 TIFF 이미지를 원본 PDF 파일 이름과 일치하는 폴더 이름을 가진 자체 폴더에 넣는 것입니다.

for file in *.pdf; do
    pdftoppm -tiff -f 1 -l 2 "$file" ~/tiff/directory/"$file"/"$file"
done

pdftoppm이 명령의 8개 인스턴스를 동시에 실행하려면 어떻게 해야 합니까 ?

저는 데비안을 사용하고 있습니다. TIFF로 변환해야 하는 PDF가 10000개 있습니다.

답변1

한 가지 방법은 모든 작업에 대한 셸 입력을 만드는 것입니다.

for file in *.pdf
do
    printf 'pdftoppm -tiff -f 1 -l 2 "%q" ~/tiff/directory/"%q"/"%q"' \
        "$file" "$file" "$file"
done

그런 다음 이를 parallel -j NN이 동시에 실행할 작업 수인 위치로 파이프합니다.

for file in *.pdf
do
    printf 'pdftoppm -tiff -f 1 -l 2 "%q" ~/tiff/directory/"%q"/"%q"' \
        "$file" "$file" "$file"
done |
parallel -j 8

답변2

GNU 사용 parallel:

printf '%s\0' ./*.pdf |
parallel --null --jobs 8 \
    pdftoppm -tiff -f 1 -l 2 '{}' ~/tiff/directory/'{/.}'/'{/.}'.tiff

위의 명령 파이프라인은 현재 디렉터리에서 pdftoppm일치하는 모든 파일 이름에 대해 명령을 실행 합니다. 현재 경로 이름으로 *.pdf확장하고 현재 경로 이름의 기본 이름으로도 확장하고 파일 이름 접미사를 제거합니다. 따라서 현재 파일 이름이 이면 while 이 됩니다 .'{}''{/.}'./file-02.pdf'{}''./file-02.pdf''{/.}'file-02

가능한 파일 이름을 처리 parallel하기 위해 nul로 구분된 경로 이름을 사용합니다 . printf이 내용은 에서 --null읽 습니다 parallel.

대상 경로 이름을 일부 변경했습니다. 실제로 사용하려는 것에 맞게 조정해야 합니다.

관련 정보