현재 10,000개가 넘는 폴더가 있습니다. 각 폴더에는 .pdf 파일로 변환해야 하는 .png 및 .jpg 이미지가 있습니다. 파일은 번호순으로 정렬되었습니다.
나는 속도를 찾고 있습니다. 현재 각 폴더에 CD를 넣고 실행할 수 있습니다.
img2pdf * -o out.pdf
수백 개의 이미지가 있음에도 불구하고 1초도 안 되어 완벽하게 생성된 out.pdf를 얻었습니다.
내 최종 목표는 호출 가능한 쉘 스크립트에서 이를 자동화하는 것입니다. 따라서 각 폴더는 기본적으로 다음과 같이 이전 디렉토리와 동일한 파일 이름을 가진 .pdf 파일이 됩니다.
Directory001/img001.jpg
img002.jpg
img003.jpg
OtherDirectory/img1.png
img2.png
img3.png
~이 되다
Directory001.pdf
OtherDirectory.pdf
대신 img2pdf를 사용하면 PDF를 생성하는 가장 빠른 방법이기 때문입니다. 저는 간단한 bash에 대한 경험이 있지만 간단한 한 줄만 사용합니다(모든 디렉터리를 zip으로 변환하는 것과 같은). 할 수 있다는 것은 알지만 어디서부터 시작해야 할지 모르겠습니다.
답변1
많은 수의 파일이나 디렉터리에 대해 배치 명령을 실행하려면 다음과 같이 find -exec를 사용하는 경우가 많습니다.
find . -type d -exec "img2pdf" "{}"/* -o "{}".pdf ";"
이 접근 방식이 가장 유연하지만 귀하의 경우 간단한 루프를 사용할 수도 있습니다.
for i in ./*/
do img2pdf "$i"/* "$i.pdf"
done
답변2
이 시도
#!/bin/bash
#set -xf
TOPDIR=$PWD
dirs=($(find . -type d))
for dir in "${dirs[@]}"; do
#echo $dir
cd $dir
#echo $PWD
img2pdf --out $dir.pdf *.jpg
cd $TOPDIR
done