我想写一个bash
脚本把.pdf
当前目录下的每个文件都转换成一个.png
文件。例如:
$ls .
a.pdf b.pdf
$./pdf2png.sh
Converting pdfs to pngs
a.pdf -> a.png
b.pdf -> b.png
这是我最好的尝试:
#!/bin/bash
convert -verbose -density 500 -resize '800' a.pdf a.png
convert -verbose -density 500 -resize '800' b.pdf b.png
如果您有非常奇怪的名称,包含换行符或反斜杠等的名称,您可以执行以下操作:
find . -type f -name '*.pdf' -print0 |
while IFS= read -r -d '' file
do convert -verbose -density 500 -resize 800 "${file}" "${file%.*}.png"
done
这应该能够处理你扔给它的任何东西。
使用的技巧:
find ... -print0
: 导致find
打印由空字符分隔的结果,让我们处理换行符。IFS=
:这将禁用分词,需要处理空格。read -r
: 禁用反斜杠转义字符的解释,以处理包含反斜杠的文件。read -d ''
: 将记录分隔符设置为空字符,以处理 find 的输出并正确处理带有换行符的文件名。${file%.*}.png
: 使用 shell 的内置字符串操作功能来删除扩展名。本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句