2017-01-16 8 views
-1
for f in find *.png; do convert "$f" "$f".pdf; done 

これは、ディレクトリ内のpngファイルを見つけてpdfに変換する必要がありますが、エラーが発生します。 Bashでこれを行うより良い方法は何ですか?すべてのpngファイルをBashのpdfに変換するには?

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. 
+1

bashは魔法のようにfindを "実行"する方法を知っていますか? bashは "\ *。png" 'here'を展開するのではなく、 '*'を見つけることを知っていますか? – John3136

答えて

4

あなたはforループに与えているファイル名のリストは、文字通りfindが含まれています。私はあなたが何を意図する。これは、うまくスペースを処理しません

for f in $(find . -iname '*.png'); do convert "$f" "$f".pdf; done 

で、現在のディレクトリ、または下のすべてのPNG画像を探し、find出力を与えることだと思います。よりよい解決策はちょうどあなたが.pdf代わりの.png.pdfあなたとファイルを持っていることを好む場合は、.png.pdf

1

で終わるファイル名を持つ羽目になることに注意が

find自体から

find "$PWD" -iname '*.png' -execdir convert '{}' '{}'.pdf \; 
を変換を実行することです使用できる:

find . -name '*.png' -exec sh -c 'convert $1 ${1%.png}.pdf' sh {} \; 
関連する問題