如何在 Bash 中将所有 png 文件转换为 pdf?

Cha*_*har 0 bash

for f in find *.png; do convert "$f" "$f".pdf; done
Run Code Online (Sandbox Code Playgroud)

这就是我必须在目录中找到 png 文件并将它们转换为 pdf 的内容,但出现错误。在 Bash 中执行此操作的更好方法是什么?

convert: unable to open image `find': No such file or directory @ error/blob.c/OpenBlob/2705.
convert: no decode delegate for this image format `' @ error/constitute.c/ReadImage/504.
convert: no images defined `find.pdf' @ error/convert.c/ConvertImageCommand/3257.
Run Code Online (Sandbox Code Playgroud)

Dav*_*d Z 5

您提供给for循环的文件名列表字面上包含find. 我想你的意思做的就是给输出find,或在当前目录下,它们是搜索所有PNG图片

for f in $(find . -iname '*.png'); do convert "$f" "$f".pdf; done
Run Code Online (Sandbox Code Playgroud)

这不会很好地处理空间。更好的解决方案是从find自身内部运行转换,

find "$PWD" -iname '*.png' -execdir convert '{}' '{}'.pdf \;
Run Code Online (Sandbox Code Playgroud)

尽管请注意,您最终会以文件名结尾 .png.pdf