.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 N
N이 동시에 실행할 작업 수인 위치로 파이프합니다.
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
.
대상 경로 이름을 일부 변경했습니다. 실제로 사용하려는 것에 맞게 조정해야 합니다.