我如何grep隐藏文件?

时间:2012-04-29 20:25:13

标签: grep hidden-files dotfiles

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

如果我运行

grep不包含此文件夹

grep -r search *

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

10 个答案:

答案 0 :(得分:110)

请参阅本文末尾的解决方案,作为您正在做的事情的更好替代方案。

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

grep -r search * .*

*将匹配除隐藏文件以外的所有文件,而.*仅匹配隐藏文件。但是,如果给定目录中没有非隐藏文件或没有隐藏文件,则会失败。您当然可以明确添加.git而不是.*

但是,如果您只想在给定目录中搜​​索,请按以下方式进行搜索:

grep -r search .

.将匹配当前路径,其中包括非隐藏和隐藏文件。

答案 1 :(得分:7)

我刚遇到这个问题,根据@ bitmask的回答,这是我的简单修改,以避免@sehe指出的问题:

grep -r search_string * .[^.]*

答案 2 :(得分: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

答案 3 :(得分:2)

您可能想要使用此方法:

find ~ -name '*' | xargs grep search

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

find ~ -maxdepth 1 -name '*' | xargs grep search

答案 4 :(得分:0)

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

find . -type f | xargs grep search

仅查找文件(包括隐藏)和grep每个文件

答案 5 :(得分:0)

仅在当前位置搜索所有隐藏文件和目录:

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

仅限所有隐藏文件:

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

仅限所有隐藏目录:

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

答案 6 :(得分:0)

要仅在特定文件夹中查找,可以使用:

ls -al | grep " \."

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

答案 7 :(得分:0)

为防止匹配不是隐藏文件的...,可以将pgrepgrep -Pls -a一起使用,如下例所示:

ls -a | grep -P "^\.[A-Z,a-z,0-9]"

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

[A-Z,a-z,0-9]指出第二个字符必须是字母或数字

此命令将匹配所有以字母A-Z或a-z或数字0-9开头的隐藏文件和目录。

此方法将排除结果“。”和“ ..”,以便仅匹配隐藏文件和目录。

答案 8 :(得分:0)

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

go.Layout

答案 9 :(得分:0)

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

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

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