現在のディレクトリにあるすべてのファイル名からtest.extraを削除したい
for filename in *.fasta;do
echo $filename | sed \e 's/test.extra//g'
done
しかし、 file.echo が見つからないことについて不平を言うのは、正しくリストされていることを確認することです。
まず、「\e」の代わりに「sed -e」を使用します
そして、bashでこのようにすることをお勧めします
for filename in *.fasta; do
[ -f "$filename" ] || continue
mv "$filename" "${filename//test.extra/}"
done
試すrename "extra.test" "" *
またはrename 's/extra.test//;' *
$ find
./extra.test-eggs.txt
./extra.testbar
./fooextra.test
./ham-extra.test-blah
$ rename "extra.test" "" *
$ find
./-eggs.txt
./bar
./foo
./ham--blah
rename
次のコマンドを試してください。
rename 's/test.extra//g' *.fasta
$ mmv '*test.extra*.fasta' '#1#2.fasta'
mmv
これは、既存のファイルを上書きする場合に何もしないという意味で安全です (これをオフにするコマンドライン オプションがあります)。