【发布时间】:2013-01-01 09:57:16
【问题描述】:
我经常需要从具有 git 目录.git/ 的目录中搜索特定字符串。这是我使用的命令:
find . -name .git -prune -o -print | xargs grep <string-to-search>
-name .git -prune -o -print 选项是忽略.git/ 下的文件。但是,它会输出很多 'Is a directory' 消息,这些消息会使整个结果变得混乱。例如,
...
grep: ./reports: Is a directory
grep: ./scripts: Is a directory
grep: ./scripts/js: Is a directory
grep: ./scripts/js/adapter: Is a directory
...
如何修改命令行以便我可以忽略.git/目录和所有其他目录(即只搜索可搜索的文件)。
显然,-type f 选项不适用于:
find -type f . -name .git -prune -o -print
【问题讨论】:
-
你为什么不用
git-grep? -
另外,最后一个命令应该是
find . -type f -name .git -prune -o -print。 -
谢谢,@Johnsyweb。
find . -type f -name .git -prune -o -print实际上仍然输出目录。 -
你说得对——使用
git-grep:git grep --untracked <string-to-search>简单得多。让我保持这个问题;我仍然很好奇我们如何使用 grep 和 find 的组合来做到这一点。 -
如果你从不同的地方克隆了多个 .git(例如使用repo),
git-grep(或其他工具)可以处理这个问题吗?
标签: command-line grep find