ファイルセットに対してコマンドを繰り返すには?

ファイルセットに対してコマンドを繰り返すには?

次の拡張子を持つファイルでいっぱいのフォルダがあります.dot

a.dot
b.dot
c.dot

このフォルダ内のすべてのファイルを参照して、次のようにコマンドを実行したいと思います。

dot -Tpdf a.dot -o a.pdf
dot -Tpdf b.dot -o b.pdf
dot -Tpdf c.dot -o c.pdf

垂直バーを使用し、次のコマンドを実行する必要があるようです。

ls *.dot | dot -Tpdf ... -o ....pdf

しかし、パイプラインが各ファイルを中間部分にのみ配置する方法はわかりません。使用する必要がありますかxargs?そして延長部分をはずした後、2番目の部分に乗せる方法も出ています。少なくとも正しい方向(使用するシェルコマンド)を教えることができれば、この問題を解決するのに役立ちます。

ベストアンサー1

使用

for i in *.dat ; do dot -Tpdf "$i" -o "$(basename "$i" dot)pdf" ; done

編集する: スペースを含むファイル名を正しく処理します。

おすすめ記事