现在我做了很多:

find * | grep py$ | xargs grep foo

我记得有一些实用程序以较少的输入方式执行此操作,但是哪个?

更新:如果可能,我更喜欢使用Bash shell。

有帮助吗?

解决方案

我喜欢确认

您更愿意输入哪个?

$ grep pattern $(find.-type f | grep -v'\ .svn')

$ ack pattern

其他提示

你可能会发现你的shell帮助你。例如,在 zsh 中,你可以做到

grep foo **/*.py

如果.py文件的数量不超过命令允许的最大参数数(64k?)。请注意,您可以对文件进行限定,例如。

grep foo **/*.py(mh-5)

将为您提供过去5小时内修改的所有内容。

您是否尝试过确认

zsh有递归通配,所以你可以做

grep foo **/*.py

看看马,没找到:)

更新:哦,如果你做了很多事情,那么别名或为其编写功能当然不会受到伤害

它被称为grep * wink *: - )

当前目录中的所有py

grep -R foo *.py

当前和任何子目录中的所有文件

grep -R foo .
find . -name "*.py" -exec grep -H foo '{}' ';'
grep -r --include='*.py' foo *

我使用的东西非常类似于你的find / grep对,尽管有更多条件 - 例如,排除.svn目录中的文件。我做了这么多,我只围绕这些调用制作了脚本,所以我可以调用“src-grep ...”。并且它基本上做了你在这里做的事情。 (然后我为许多上下文行添加了一个可选扩展,以传递给grep -C标志(如果提供),以及一个单独的版本来grep定义语句的结果。)

对我来说,这比递归grep更有用,更快。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top