我正在尝试将文件first_second.pdf重命名为first_0second.pdf
因此,我阅读了有关捕获和反向引用的内容。但不知何故,它不起作用。有人能告诉我我哪里做错了吗?
rename 's/\(.*_\)\([1-9]\).pdf$/$10$2.pdf/' first_1.pdf我期望将first_1.pdf重命名为first_01.pdf
发布于 2019-01-18 05:31:16
-n参数向您展示了它将做什么,而不是实际执行它,这对测试很有好处。匹配并捕获下划线之前的第一部分,包括下划线。然后匹配并捕获1个或多个数字,后面跟着文字点,直到行尾为止。替换为第一个捕获的组(用括号括起组编号,以便将其与文字‘0’分开)、文字'0',然后替换剩余的两个捕获的组。
rename -n 's/(.*_)([0-9]+)(\..*)$/${1}0$2$3/' first_1.pdf
rename(first_1.pdf, first_01.pdf)发布于 2019-01-18 06:36:09
问题在于后向引用的转义字符和大括号。这是因为rename在内部使用了posix-extended。如果rename使用posix-basic作为regextype,则必须使用转义字符。
通过删除转义并为反向引用添加大括号,regex表达式起作用了。
rename 's/(.*_)([1-9]).pdf$/${1}0${2}.pdf/' first_1.pdfhttps://stackoverflow.com/questions/54243806
复制相似问题