.pdf
現在のディレクトリ内のすべてのファイルをファイルに変換するBashスクリプトを作成したいと思います.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
ベストアンサー1
お持ちの場合本物奇妙な名前、改行やバックスラッシュなどを含む名前は、次のようにすることができます。
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の出力を処理し、改行文字を含むファイル名を正しく処理するには、レコード区切り文字をNULL文字に設定します。${file%.*}.png
:シェルに組み込まれている機能を使用します。文字列操作機能拡張機能を削除してください。