如何grep隐藏文件?


96

我正在搜索Git存储库,并希望包含该.git文件夹。

grep 如果我运行,则不包括此文件夹

grep -r search *

包含此文件夹的grep命令是什么?

Answers:


135

请参考本文末尾的解决方案,作为您正在做的更好的选择。

您可以显式包括隐藏文件(目录也是文件)。

grep -r search * .*

*会匹配所有文件除了所隐藏的和.*将只匹配隐藏文件。但是,如果给定目录中没有非隐藏文件或没有隐藏文件,则此操作将失败。您当然可以显式添加.git而不是.*

但是,如果您只想在给定目录中搜​​索,请按照以下步骤进行操作:

grep -r search .

.会在目前的路径,这将包括非隐藏和隐藏文件。


1
第一种方法(grep -r search *。*)对我有用。第二种方法(grep -r search。)找不到字符串。当省略“ -r”并仅搜索顶级目录时,我发现了类似的结果。我正在使用GNU grep 2.6.3。
艾伦

@Alan:太奇怪了。我经常使用。您是否在同一目录上尝试过?
位掩码

27
使用.*将包括父目录(因为..匹配)
sehe

1
将这种解决方案归纳起来是否安全,因为外壳之间的行为可能会有所不同?
astletron'3

6
对于第一个版本,您应该添加--exclude-dir = ..以避免在父文件夹中搜索
user762353 '17

11

我只是遇到了这个问题,并且基于@bitmask的答案,这是我的简单修改,以避免@sehe指出的问题:

grep -r search_string * .[^.]*

使用此方法我没有得到任何结果:sudo grep -r ANDROID_HOME * .[^.]*我在这里做错了什么?
messerbill

@messerbill,您在哪里运行搜索?
insaner

3

也许您会更喜欢将“ grep”与“ find”命令结合使用,以获得完整的解决方案,例如:

find . -exec grep -Hn search {} \;

此命令将在隐藏文件或目录中搜索字符串“ search”,并列出与此输出格式一致的所有文件:

文件路径:行号:符合重合的行

./foo/bar:42:search line
./foo/.bar:42:search line
./.foo/bar:42:search line
./.foo/.bar:42:search line

2

您可能要使用这种方法,假设您正在搜索当前目录(否则将。替换为所需的目录):

find . -type f | xargs grep search

或者,如果您只想在顶层搜索(如果您要尝试这些,则可以更快地进行测试):

find . -type f -maxdepth 1 | xargs grep search

更新:我修改了示例以响应Scott的评论。我还添加了“ -f型”。


1
(1)  ~是用户的主目录。问题与用户的主目录无关,因此答案不应提及  ~。(2)在  find命令中,-name '*'是无操作(即无用)。
斯科特,

1

要在当前位置仅搜索所有隐藏的文件和目录,请执行以下操作:

find . -name ".*" -exec grep -rs search {} \;

仅所有隐藏文件:

find . -name ".*" -type f -exec grep -s search {} \;

仅所有隐藏目录:

find . -name ".*" -type d -exec grep -rs search {} \;

1

所有其他答案都更好。这可能很容易记住:

find . -type f | xargs grep search

它仅查找文件(包括隐藏文件)并抓取每个文件。


0

要仅在某个文件夹中查找,可以使用:

ls -al | grep " \."

列出并传递到grep的命令非常简单。


0

除了泰勒的建议外,这是递归grep所有文件和文件夹(包括隐藏文件)的命令

find . -name "*.*" -exec grep -li 'search' {} \;

0

为了防止匹配...未隐藏的文件,您可以使用grepls -A就像这个例子:

ls -A | grep "^\."

^\. 指出第一个字符必须是 .

-A--almost-all选项排除的结果.,并..因此只有隐藏的文件和目录进行匹配。


0

您还可以搜索特定类型的隐藏文件,例如搜索隐藏目录文件:

grep -r --include=*.directory "search-string"

这可能比其他一些选项更好。其他可行的选择可能太慢了。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.