bash - 将文件夹树中的所有 .pdf 文件转换为 .png

标签 bash shell ubuntu imagemagick imagemagick-convert

我在 Ubuntu 上,我有一棵包含 .pdf 文件的文件夹树。我需要将每个转换为 .png 格式。我目前使用的 bash 脚本是:

for f in $(find ./polkadots -name 'image.pdf'); do
convert -transparent white -fuzz 10% $f image.png;
done

我已经单独测试了 for 循环,它可以工作(它会生成我需要转换的 ./polkadots 文件夹下的所有 .pdf 文件的列表):
for f in $(find ./polkadots -name 'image.pdf'); do
echo "$f";
done

我已经单独测试了 imagemagic convert 命令,它可以工作(它将我当前目录中的单个文件从 .pdf 转换为 .png):
convert -transparent white -fuzz 10% image.pdf image.png

但是,当我将它们组合在一起时……控制台坐下来思考了一会儿,然后得出结论……但是没有创建或更改任何文件,也没有产生错误消息。我究竟做错了什么?

编辑:正在创建新的 .png 文件,但它们是在我当前的目录中创建的,而不是在找到 .pdf 的子目录中。我该如何解决?

最佳答案

尝试使用 find独自的。无需使用循环。

我没有测试过这个命令,但它应该可以工作。
find ./polkadots -name 'image.pdf' -exec convert -transparent white -fuzz 10% {} image.png \; -print-print最后是可选的。我更喜欢查看哪些文件已被修改。

关于bash - 将文件夹树中的所有 .pdf 文件转换为 .png,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21174733/

相关文章:

bash - UNIX:如何以文件作为输入来运行程序

php - 从 PHP 执行 C 程序

macos - 协助使用安全授权或特权执行

python - importerror 没有名为缓存的模块

bash - 从 Bash 函数返回字典

bash - xrandr 大小 1920x1080 在可用模式 ubuntu 中找不到

bash - 将此程序缩减为一行

bash - Bash 中的 while 循环子 shell 困境

php - Uncaught Error : Class not found - Laravel

r - 在 R-Server Ubuntu 上安装 rgl