質問: Linuxとかで、ファイルを変換するコマンドがあります。 例えばJPEGファイルをPNGファイルに変換する jpg2png コマンドを想定します。 このコマンドの使い方は、 ``` jpg2png -i input.jpg -o output.png ``` です。いまディレクトリに 000.jpg から 999.jpg までのJPEGファイルがあり、 これを全部PNGファイルに変換したいとき、 ``` jpg2png -i *.jpg -o ほにゃらら.png ``` と書きたいのですが、**ほにゃらら**に当てはまるような機能?書き方?は、 Bashとかにあるんでしょうか? こういう場合は、シェルスクリプトを書くか(シェルスクリプトでは正規表現と後方参照が使える)、 コマンド側で個別対応対応なんでしょうか。
回答: 自分ならこのようにやると思います。 不測の事態に備えてあらかじめバックアップは取っておきましょう まず以下のように実行して、出力行の内容が自分のやりたいコマンドであることを確認してから...、 ``` $ ls -1 *.jpg | sed 's/.jpg$//' | xargs -i@ echo jpg2png -i @.jpg -o @.png jpg2png -i aaa.jpg -o aaa.png jpg2png -i bbb.jpg -o bbb.png jpg2png -i ccc.jpg -o ccc.png ``` さきほどのコマンドから「echo」を削って実際に実行させます。 ``` $ ls -1 *.jpg | sed 's/.jpg$//' | xargs -i@ jpg2png -i @.jpg -o @.png ```