0

にあるすべてのファイルの名前を変更しようとしてい*_[m|f].txtます*.txt。のインスタンスがファイル名に表示される場合、それは常に拡張子_[m|f]の直前に表示されると想定できます。.txt

例:

+-----------------------+---------------------+
|        input          |       output        |
+-----------------------+---------------------+
| hello_hi_wefwef_f.txt | hello_hi_wefwef.txt |
+-----------------------+---------------------+
| ya_yo_sup_m.txt       | ya_yo_sup.txt       |
+-----------------------+---------------------+

私は現在これを試しています:

for i in *_[m|f].txt ; do
   mv "$i" "${i/-_[m|f].txt/.txt}"
done

しかし、それがないと不平を言っています | 正規表現の演算子。私がやりたいことをする簡単な方法はありますか?

4

1 に答える 1

2

スクリプトを次のように変更します。

for i in *_[mf].txt; do
   mv "$i" "${i/_[fm]\.txt/\.txt}"
done
于 2012-12-05T20:25:51.043 に答える