1

今日の午後、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
4

4 に答える 4

5

代わりにこれを行います:

for x in *; do 
    cp "$x" "${x/./_holo_light.}"
    cp "$x" "${x/./_holo_dark.}"
done
于 2013-02-19T09:02:08.383 に答える
3

なぜだけではないのですか?

ls | sed 's/a/c/g'
于 2013-02-19T08:48:04.767 に答える
1

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

于 2013-02-19T09:28:53.180 に答える
0

ここに記載されている回答は正しく最適化され
ていますが、元の質問テキスト「標準入力をシミュレートする」には、ここで文字列を使用できます。

echo "$var" | command

で置き換えることができます

command <<< "$var"
于 2013-02-19T12:01:04.907 に答える