使用正则表达式重命名命令不起作用

时间:2015-04-03 09:24:04

标签: regex linux rename

我想使用正则表达式重命名文件。

例如:使用以下命令将文件Mod[0-9][0-9]Mod[0-9][0-9]_temp中的模式N_Mod10_m.bdf替换为N_Mod11_n.bdf

rename 's/\(.*Mod[0-9][0-9]\)\(.*\.bdf\)/$1_temp$2 *

但这不起作用。

1 个答案:

答案 0 :(得分:0)

您需要使用非贪婪模式:(.*?)。另外,添加缺少的引用'

我想,这就是你要找的东西:rename 's/(.*?Mod[0-9][0-9])(.*?\.bdf)/$1_temp$2' *

查看Rename Multiple Files in a Shell PromptRenaming files to have lower case extensions with rename

对于CentOS,您可以将_temp插入文件名中,如下所示:

for i in *; do j=`echo $i | sed -r 's/(.*?Mod[0-9][0-9])(.*?\.bdf)/\1_temp\2/g'`; mv "$i" "$j"; done