次のコマンドラインのsed
コマンドは、私が期待しているものを返します。sedの結果がb/wのコマンドラインとシェルスクリプトと異なる
$ echo './Adobe ReaderScreenSnapz001.jpg' | sed -e 's/.*\./After-1\./'
After-1.jpg <--- result
Howerverは、以下のbashスクリプトでは、sed
は、私が期待として機能することはないseeems。
#!/bin/bash
beforeNamePrefix=$1
i=1
while IFS= read -r -u3 -d '' base_name; do
echo $base_name
rename=`(echo ${base_name} | sed -e s/.*\./After-$i./g)`
echo 'Renamed to ' $rename
i=$((i+1))
done 3< <(find . -name "$beforeNamePrefix*" -print0)
結果(同じディレクトリ内に類似した名前を持つ複数のファイルを持つ):私は間違っ
./Adobe ReaderScreenSnapz001.jpg
Renamed to After-1. <--- file extension is missing.
./Adobe ReaderScreenSnapz002.jpg
Renamed to After-2.
./Adobe ReaderScreenSnapz003.jpg
Renamed to After-3.
./Adobe ReaderScreenSnapz004.jpg
Renamed to After-4.
?ありがとうございました。
あなたの 'sed'コマンドは大文字ではありません。両方のバージョンで同じです – Mat
OOC、なぜstdinの代わりにfd 3を使用していますか? – SiegeX
@SiegeX:彼は私の[以前の質問への回答]を使用しています(http://stackoverflow.com/questions/9145760/bash-script-strings 9147793#9147793);ループの中の何かがstdinから読み込むことを決める場合(通常は面白い結果を得るため)fd 3を慣れて使用します。 –