Você pode fazer isso com a pesquisa assim:
find path/ -type f -name '[xy]\.jpg' -exec convert {} {}\.pdf \;
Os arquivos serão nomeados x.jpg.pdf
e y.jpg.pdf
. find
recebe regex para um padrão de nome para que você possa fazer isso em lote para muitos arquivos, você só precisa da regex apropriada. No entanto, isso cria apenas dois arquivos PDF únicos para cada imagem.
Para colocá-los todos em um arquivo PDF, você pode usar o seguinte:
# create a directory in /tmp
mkdir /tmp/output
# find all the images and convert them to single standing PDF files
# then move them to the output directory
find path/ -type f -name '[xy]\.jpg' -exec convert {} {}\.pdf \; -exec mv {}\.pdf /tmp/output/ \;
# now join them all together to a single file
pdfunite /tmp/output/* ~/output.pdf
# normally the system clean up /tmp on restart, but we clean up ourselves
rm -r /tmp/output
Aqui também é necessário um regex adequado para encontrar todos os seus arquivos, mas o resto não é limitado em quantos arquivos você pesquisa assim.
Claro que você pode fazer um script bash a partir disso:
#!/bin/bash
# create a directory in /tmp
tmpdir="$(mktemp -d)"
# find all the images and convert them to single standing PDF files
# then move them to the output directory
find "$1" -type f -name "$2" -exec convert {} {}\.pdf \; -exec mv {}\.pdf "$tmpdir" \;
# now join them all together to a single file
pdfunite "$tmpdir"/* "$3"
# normally the system clean up /tmp on restart, but we clean up ourselves
rm -r "$tmpdir"
Salvar como script.sh
e chmod 755 script.sh
, agora você pode chamar assim:
# usage script.sh [PATH] '[PATTERN]' [OUTPUT-FILE]
./script.sh path/ '[xy]\.jpg' ~/output.pdf
Para incorporar as mudanças propostas pelo @dessert , o script se torna isso, mas funciona da mesma maneira:
#!/bin/bash
# create a directory in /tmp
tmpdir="$(mktemp -d)"
# find all the images and convert them to single standing PDF files
# then move them to the output directory
find "$1" -type f -name "$2" -exec sh -c 'convert "$1" "$0/${1##*/}.pdf"' $tempdir "{}" \;
# now join them all together to a single file
pdfunite "$tmpdir"/* "$3"
# normally the system clean up /tmp on restart, but we clean up ourselves
rm -r "$tmpdir"
Divirta-se.