带有-regex选项的Linux`get`命令不能按预期工作

时间:2015-12-04 10:05:54

标签: regex linux bash find

我在当前目录中有一个文件foo。然后我运行以下命令:

  1. find . -regex 'foo'找不到任何内容
  2. find . -regex 'foo.*'找不到任何内容
  3. find . -regex '.*foo'找到文件
  4. 我希望这些命令中的任何一个都能产生积极的结果。

    find命令版本为4.4.2

2 个答案:

答案 0 :(得分:4)

来自手册:

   -regex pattern
          File name matches regular expression pattern.  This is  a  match
          on  the  whole path, not a search.  For example, to match a file
          named `./fubar3', you can use the regular expression `.*bar.' or
          `.*b.*3',  but  not `f.*r3'.  The regular expressions understood
          by find are by default Emacs Regular Expressions, but  this  can
          be changed with the -regextype option.

重要的部分是:这是整条路径的匹配,而不是搜索

所以只有第三个正则表达式产生结果:

./foo

答案 1 :(得分:0)

find实际上会尝试匹配字符串./foo(与-name开关不同),因此如果文件-regex '.*foo',第三种模式foo必须有效没有延期。

尝试使用:

``find . -regex '.*foo.*'``

报告输出。