我正在搜索 Git 存储库并希望包含该.git
文件夹。
grep
如果我运行,则不包括此文件夹
grep -r search *
包含此文件夹的 grep 命令是什么?
我正在搜索 Git 存储库并希望包含该.git
文件夹。
grep
如果我运行,则不包括此文件夹
grep -r search *
包含此文件夹的 grep 命令是什么?
请参阅本文末尾的解决方案,作为您正在做的更好的选择。
您可以显式包含隐藏文件(目录也是文件)。
grep -r search * .[^.]*
将*
匹配除隐藏文件之外的所有文件,并且.[^.]*
仅匹配没有..
. 但是,如果给定目录中没有非隐藏文件或没有隐藏文件,这将失败。您当然可以显式添加.git
而不是.*
.
但是,如果您只是想在给定目录中搜索,请执行以下操作:
grep -r search .
将.
匹配当前路径,该路径将包括非隐藏文件和隐藏文件。
我刚刚遇到了这个问题,根据@bitmask的回答,这是我的简单修改,以避免@sehe指出的问题:
grep -r search_string * .[^.]*
也许您更愿意将“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
您可能想要使用这种方法,假设您正在搜索当前目录(否则将 . 替换为所需目录):
find . -type f | xargs grep search
或者如果您只想在顶层搜索(如果您正在尝试这些,测试起来会更快):
find . -type f -maxdepth 1 | xargs grep search
更新:我修改了示例以回应 Scott 的评论。我还添加了“-type f”。
为了防止匹配.
并且..
哪些不是隐藏文件,您可以在此示例中使用grep
with ls -A
like:
ls -A | grep "^\."
^\.
声明第一个字符必须是.
-A
or--almost-all
选项排除结果,.
因此..
仅匹配隐藏的文件和目录。
要仅在某个文件夹中查找,您可以使用:
ls -al | grep " \."
这是一个非常简单的命令来列出和管道到 grep。
所有其他答案都更好。这个可能很容易记住:
find . -type f | xargs grep search
它只查找文件(包括隐藏文件)并 greps 每个文件。
除了泰勒的建议,这里是递归地grep所有文件和文件夹的命令,包括隐藏文件
find . -name "*.*" -exec grep -li 'search' {} \;
仅在您当前位置的所有隐藏文件和目录中搜索:
find . -name ".*" -exec grep -rs search {} \;
仅所有隐藏文件:
find . -name ".*" -type f -exec grep -s search {} \;
仅所有隐藏目录:
find . -name ".*" -type d -exec grep -rs search {} \;
您还可以搜索特定类型的隐藏文件,例如隐藏目录文件:
grep -r --include=*.directory "search-string"
这可能比其他一些选项更有效。其他有效的选项可能太慢了。