【问题标题】:Regular expression in find command in bashbash中find命令中的正则表达式
【发布时间】:2012-10-05 06:49:56
【问题描述】:

为什么 'save$' 不能匹配名为 save 的文件?

root@debian:/home/tiger# ls /home/test
save
root@debian:/home/tiger# find /home/test -regex 'save$'
root@debian:/home/tiger# find /home/test -regex '.*save$'
/home/test/save

【问题讨论】:

  • 这个问题是关于“程序员常用的软件工具”的,所以我觉得应该重开。
  • 问题可以改写成这样:为什么find DIR -regex 将正则表达式视为总是有一个前导^ 锚和一个尾随$ 锚?

标签: regex shell find


【解决方案1】:

因为正则表达式与完整路径(即 /home/test/save)匹配,而不仅仅是文件名“save”。

【讨论】:

  • 通常你需要 ^$ 锚来匹配整个字符串,并且,正如 OP 的例子所示,$ 是允许的。但好像也有一个隐含的^。问题仍然存在:为什么?
猜你喜欢
  • 2015-08-27
  • 2011-06-06
  • 2015-12-20
  • 1970-01-01
  • 2012-10-29
  • 1970-01-01
  • 2021-06-23
  • 1970-01-01
相关资源
最近更新 更多