File 如何在bashshell中重命名这个简单的批处理?

File 如何在bashshell中重命名这个简单的批处理?,file,bash,syntax,rename,File,Bash,Syntax,Rename,我正在尝试将*.[m|f].txt的所有文件重命名为*.txt。 如果文件名中出现了[um | f]的实例,我们可以假定它始终存在 显示在.txt扩展名的正前方 示例: +-----------------------+---------------------+ | input | output | +-----------------------+---------------------+ | hello_hi_wefwef_f.t

我正在尝试将
*.[m|f].txt的所有文件重命名为
*.txt
。 如果文件名中出现了
[um | 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

但它抱怨没有正则表达式的|操作符。有没有一种简单的方法可以完成我想要的任务?

如下修改脚本:

for i in *_[mf].txt; do
   mv "$i" "${i/_[fm]\.txt/\.txt}"
done

谢谢你,这就成功了,不过出于某种原因,我们不需要第二个\。我把它改成了。相反,不客气。请相应地更改它以使其工作。