My first instinct for batch processing files is almost always find
. It's excellent if you need to build in any sort of filtering (which you don't here) but it's still a favourite. This will also recurse into subdirectories unless you tell it (with -maxdepth 1
or other):
find -name '*.jpg' -exec convert "{}" "{}.pdf" \;
rename 's/\.jpg\.pdf$/.pdf/' *.jpg.pdf
The find
/convert
statement will output a load of .jpg.pdf
files. The second cleans this up.
Perhaps a slightly more elegant approach in such a simple case:
for file in *.jpg ; do convert "$file" "${file/%jpg/pdf}"; done
This doesn't recurse and you don't have to mess around cleaning up the filenames.
And I almost forgot, ImageMagick has a numerical output which might fit your use-case perfectly. The following will just stick a three-digit identifier (000
, 001
, 002
, etc) on the end of the "myPDF":
convert *.jpg myPDF%03d.pdf
Obviously if you're dealing with more than a thousand entries, increase the number. If you don't want it zero-padded, remove the leading zero.
Best Answer
The most useful program (suite) to manipulate image is Imagemagick (
sudo apt install imagemagick
) and for this task you will need theconvert
binary.You will need to use something like: