Bashに反映したい画像ファイルを含むディレクトリがあります。エコー中にファイル名と拡張子を1行のコマンドに変更したいと思います。
サンプルファイル:
images/file_name_1.jpg
images/file_name_2.jpg
通常、次のように単一の交換を実行できます。
for i in images/*; do echo ${i/file/image}; done
出力は次のとおりです。
images/image_name_1.jpg
images/image_name_2.jpg
forループに保持し、 "jpg"文字列も "png"に置き換えるにはどうすればよいですか?これは単なる例であり、ドットをカンマなどに置き換えることができます。
私がこれをしようとすると:
for i in images/*; do echo ${{i/jpg/png}/file/image}; done
これはうまくいきません。他の解決策やアイデアが見つかりません。可能ですか?それではどうですか?
ベストアンサー1
簡単な方法は、結果を変数に割り当ててからその変数を使用することです。例:
for filename in images/*
do
echo "filename is now $filename"
filename=${filename/jpg/png}; echo "filename is now $filename"
filename=${filename/file/image}; echo "filename is now $filename"
echo "final filename is ${filename}"
done