正则表达式 - 使用 prefix/suffix 重命名文件

Regex - Renaming files with a prefix/suffix

下面的命令来自这个答案:

该命令添加单词 new. 作为前缀。明白了。

rename 's/(.*)$/new./' original.filename

但是,我想问一下为什么这里需要左括号和右括号:

(.*)

还有为什么 </code> 是存储原始文件名的变量,为什么我不能用下面的方法做同样的事情(我用 <code> 替换了 </code> ):</p> <pre><code>rename 's/(.*)$/new./' original.filename

我对 bash 还是比较陌生,所以非常感谢帮助。

首先,(.*)$ 就是所谓的 正则表达式 (或正则表达式)。正则表达式用于根据某些规则匹配文本。

例如,.* 匹配零个或多个字符。 $ 匹配行尾。因为默认情况下正则表达式是贪婪的,所以 .*$ 匹配整行(尽管正是因为正则表达式是贪婪的,所以 $ 是多余的)。

However, I'd like to ask why the open and close brackets are required here: (.*)

圆括号表示。分组用于"save"匹配文本的内容,方便以后使用。

And also why is </code> the variable which stores the original file name, why can't I do the the same with following (where I have replaced <code> with </code>): ...</p> </blockquote> <p>如<code>rename(1),第一组存入</code>,第二组存入<code>,以此类推。例如,下面的正则表达式:

(a)(b)(c)

将单个 a 存储到 </code>,将单个 <code>b 存储到 </code> 等等。</p> <p>你只有一组,所以你必须使用<code></code>、<code>、...等标记将为空。

最后但同样重要的是,您可以使用更短的等效命令:

 rename 's/^/new./'

这里^表示字符串的开始