美元符号在bash命令“rename”的替换行中的含义是什么

时间:2015-03-27 21:21:41

标签: bash rename dollar-sign

我正在阅读有关重命名的信息并遇到此示例将文件扩展名从htm更改为html:

rename -v 's/\.htm$/\.html/' *.htm

它说:$表示字符串的结尾。 \.htm$表示它与.htm匹配,但不匹配.html

我在这里使用$感到有些困惑。由于我们已经在命令行末尾指定了*.htmrename只会选择htm文件(而不是html)。那么为什么有必要使用$呢?换句话说,没有使用$会出现什么问题?

1 个答案:

答案 0 :(得分:2)

Anchor $与源文件名的末尾匹配,在你的正则表达式中仍然需要它,并且dot也应该被转义,否则abc.htm.htm将被重命名为abc.html.htm而不是{{} 1}}。

正确的命令是:

abc.htm.html