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