file(0).jpg には、file(100).jpg 形式のファイルを含むフォルダがあります。
順序は0,1,100,2,20,21,...になるため、ここで変換を直接使用してPDFを生成することはできません。
echo *.jpg(n)
正しいファイル順序を指定してください。
パイプラインでどのように変換しますか?
頑張りましたecho *.jpg(n) | convert - out.pdf
答え1
実行するコマンドが次のような場合
convert 'file(0).jpg' 'file(1).jpg' ...etc... 'file(100).jpg' out.pdf
その後、グローブを使用するか、
convert ./*.jpg(n) out.pdf
または、パターンに一致する0..100の範囲のファイルのみを含めます。
convert 'file('<0-100>').jpg'(n) out.pdf
あるいは、中かっこ拡張を使用することもできます。
convert 'file('{0..100}').jpg' out.pdf
しかし、これではありません。ワイルドカードfile(0).jpg
、渡された文字列を既存のファイル名かどうかに変換します。file(100).jpg
以前のファイルとは異なり、file(012).jpg
exampleというファイルも失われます。
答え2
多くのファイルがオペレーティングシステムのコマンドライン制限に達したら、「ファイル名の引用」機能を使用する必要がありますconvert
。@
generate the list of files ... | convert @- out.pdf
*.jpg(n)
glob をサポートしていないシェルでは、zsh
次のコマンドを使用して正しい順序でファイルのリストを生成できます。
echo 'file('?').jpg' 'file('??').jpg' 'file('???').jpg' | convert @- out.pdf
または、中かっこ拡張をサポートするシェルを使用してください。
echo 'file('{?,??,???}').jpg' | convert @- out.pdf
これとは異なり、{1..100}
存在するファイルのみが一致します。これはほとんどのシェルに組み込まれているため、echo
オペレーティングシステムのコマンドラインによって制限されないため、この構成は便利なUUoEに置き換えることができます。