我如何grep隐藏文件?

88 grep dotfiles hidden-files

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

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

grep -r search *
Run Code Online (Sandbox Code Playgroud)

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

bit*_*ask 123

请参考本文末尾的解决方案,作为您正在做的更好的替代方案.

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

grep -r search * .*
Run Code Online (Sandbox Code Playgroud)

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

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

grep -r search .
Run Code Online (Sandbox Code Playgroud)

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

  • 使用`.*`将包含父目录(因为`..`匹配) (22认同)
  • 第一种方法(grep -r search * .*)对我有用。第二种方法 (grep -r search .) 没有找到字符串。在省略“-r”并仅搜索顶级目录时,我发现了类似的结果。我正在使用 GNU grep 2.6.3。 (4认同)
  • 对于第一个版本,应添加--exclude-dir = ..以避免在父文件夹中搜索 (4认同)

ins*_*ner 8

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

grep -r search_string * .[^.]*
Run Code Online (Sandbox Code Playgroud)


小智 5

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

find . -exec grep -Hn search {} \;
Run Code Online (Sandbox Code Playgroud)

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

文件路径:行号:重合行

./foo/bar:42:search line
./foo/.bar:42:search line
./.foo/bar:42:search line
./.foo/.bar:42:search line
Run Code Online (Sandbox Code Playgroud)