command-line - 搜索字符串: Find and Grep

标签 command-line find grep

必须有一个更好/更短的方法来做到这一点:

# Find files that contain <string-to-find> in current directory
#   (including sub directories) 
$ find . | xargs grep <string-to-find>

另外,仅搜索例如HTML文件:
 # find . | grep html$ | xargs grep <string-to-find>

预先感谢!

最佳答案

find . -name \*.html

或者,如果您要查找名称与正则表达式匹配的文件:
find . -regex filename-regex.\*\.html 

或者,如果您要在名称与正则表达式匹配的文件中搜索正则表达式
find . -regex filename-regex.\*\.html -exec grep -H string-to-find {} \;
grep参数-H输出文件名(如果您有兴趣的话)。如果没有,您可以放心地删除它,只需使用grep即可。这将指示find对找到的每个文件名执行grep string-to-find filename,从而避免了参数列表过长的可能性,并且避免了find在将结果传递给xargs之前需要完成执行。

要解决您的示例:
find . | xargs grep <string-to-find>

可以替换为
find . -exec grep -H string-to-find {} \;


find . | grep html$ | xargs grep <string-to-find>

可以替换为
find . -name \*.html -exec grep -H string-to-find {} \;

关于command-line - 搜索字符串: Find and Grep,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8138635/

相关文章:

我可以将命令行参数读取为二进制吗?

bash - 使用 find 命令搜索可执行文件

regex - Unix egrep 命令如何创建一个模式来匹配以下内容?

java - 如何将 Gui jar 转换为命令行 jar?

linux - Grep for String 在对应行打开

bash - 如何自动保存我(每次)运行的最后一个命令的输出?

mysql - Cakephp 查找 ('list' ) 与汇总数据返回空值

linux - 使用查找但仅在匹配特定模式的子目录中

regex - 用 grep/sed 替换许多任意 Markdown 链接

linux - 什么是最快的 egrep