今日の午後、bashスクリプトを1つ書くだけです。かなり醜いです。ですから、echo $x
ここに実装するためのより良い方法が存在するに違いないと思います。
for x in $(ls); do
cp $x $(echo $x | sed s/\\./_holo_light./)
cp $x $(echo $x | sed s/\\./_holo_dark./)
done
代わりにこれを行います:
for x in *; do
cp "$x" "${x/./_holo_light.}"
cp "$x" "${x/./_holo_dark.}"
done
ls
。代わりにグロブを使用してください。sed
。Bash は文字列操作を実行できます。なぜだけではないのですか?
ls | sed 's/a/c/g'
ls からの出力の解析にはいくつかの問題があることに注意してください。影響を受けていないことが確実な場合は、次のようにすることができます (GNU sed):
ls |
sed -nr 's/(.*)\.(.*)$/cp "\1.\2" "\1_holo_light.\2"\ncp "\1.\2" "\1_halo_dark.\2"/p' |
sh
sed がコピー コマンドを生成し、それがシェルに渡されて実行されます。追加する前に sed の出力を確認してください| sh
。
ここに記載されている回答は正しく最適化され
ていますが、元の質問テキスト「標準入力をシミュレートする」には、ここで文字列を使用できます。
echo "$var" | command
で置き換えることができます
command <<< "$var"