我正在搜索Git存储库,并希望包含.git
文件夹。
grep
不包含此文件夹
grep -r search *
包含此文件夹的grep命令是什么?
答案 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)
为防止匹配不是隐藏文件的.
和..
,可以将pgrep
或grep -P
与ls -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"
这可能比其他一些选项更好。其他可行的选择可能太慢了。