我正在尝试使用正则表达式重命名此帖子之后的几个文件
Renaming files using regular expressions - Linux
有我的档案 -
abcd_some_random_alphanumeric_1.pdf
abcd_some_random_alphanumeric_2.pdf
abcd_some_random_alphanumeric_3.pdf
abcd_some_random_alphanumeric_4.pdf
abcd_some_random_alphanumeric_5.pdf
我想将文件重命名为
abcd_1.pdf
abcd_2.pdf
abcd_3.pdf
abcd_4.pdf
abcd_5.pdf
我正在尝试以下
rename 's/abcd_.*_(/d+).pdf/abcd_${1}.pdf/' *.pdf
但我收到很多错误 -
Unknown regexp modifier "/a" at (user-supplied code), near ""
Unknown regexp modifier "/b" at (user-supplied code), near "{
#line 1
"
Unknown regexp modifier "/c" at (user-supplied code), near "{
#line 1
...........
"
但是,我最后想要_1,_2,_3等。我不知道如何使用原始字符串中的正则表达式捕获数据,并将捕获的组放入替换部分。
答案 0 :(得分:0)
您的语法已关闭,正则表达式中的单个数字为\d
,反斜杠不是正斜杠。此外,扩展程序.pdf
中的点应该被转义。试试这个:
rename 's/abcd_.*_(\d+)\.pdf/abcd_$1.pdf/' *.pdf
答案 1 :(得分:0)
使用以下方法:
rename -n 's/^(abcd).*(_[0-9]+\.pdf)$/$1$2/' *.pdf
$1$2
- 第1和第2个被捕获的小组