" ** / *"的意外行为(双星)在grep上

时间:2017-05-23 10:46:38

标签: recursion grep

我遇到与grep相关的双星问题。 我使用的是ubuntu 16.04。

根据我的理解(经过大量研究): grep' a' ** / *应该发现任何' a'在我的目录和所有子目录中的所有文件中(递归地)。

但是,它在我的系统中并没有像那样工作。 这是一个测试: 我的文件目录 .a(包含" a"的文件) ba / a(文件包含"在ba") ba / ca /​​ a(文件包含"在ba中的ca")

 grep 'a' *
 a:a
 ba is a directory

 grep 'a' **/*
 ba/a:in ba
 grep: ba/ca: is a directory

第一种情况很明显,但我期待从第二种情况看到这三个文件......

背后有什么解释?

谢谢, 鲍勃

1 个答案:

答案 0 :(得分:1)

grep与双星没有“关联”。你的shell扩展了这些。

根据您使用的shell以及该shell中的设置,双星可能意味着扩展任意数量的子目录级别。

如果您想递归grep,请使用grep -r }之类的grep -r a .