56

現在のディレクトリにあるすべてのファイル名からtest.extraを削除したい

for filename in *.fasta;do 

    echo $filename | sed \e 's/test.extra//g'

done

しかし、 file.echo が見つからないことについて不平を言うのは、正しくリストされていることを確認することです。

4

7 に答える 7

65

まず、「\e」の代わりに「sed -e」を使用します

そして、bashでこのようにすることをお勧めします

for filename in *.fasta; do 
    [ -f "$filename" ] || continue
    mv "$filename" "${filename//test.extra/}"

done
于 2012-08-29T09:50:24.443 に答える
48

試す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
于 2012-08-29T09:55:23.410 に答える
28

rename次のコマンドを試してください。

rename 's/test.extra//g' *.fasta
于 2012-08-29T09:46:11.753 に答える
4
$ mmv '*test.extra*.fasta' '#1#2.fasta'

mmvこれは、既存のファイルを上書きする場合に何もしないという意味で安全です (これをオフにするコマンドライン オプションがあります)。

于 2012-08-29T13:10:12.813 に答える