如何找到含有使用egrep的字符串文件(how to find files containing a

2019-08-03 08:13发布

我想找到包含linux下的特定字符串的文件。 我想是这样,但未能取得成功:

找 。 -name * .TXT | egrep的了mystring

Answer 1:

在这里,你要发送的文件名(的输出find command输入到egrep命令); 你真的想上的文件的内容运行egrep的。

这里有几个选择:

find . -name "*.txt" -exec egrep mystring {} \;

甚至更好

find . -name "*.txt" -print0 | xargs -0 egrep mystring

检查find命令帮助检查什么单一参数做。
第一种方法将产生一个新的过程对于每个文件,而第二个将通过一个以上的文件作为参数传递给egrep命令; 在-print0和-0标志需要处理潜在的讨厌的文件名(允许单独的文件名,甚至如果正确的文件名包含空格,例如)。



Answer 2:

尝试:

find . -name '*.txt' | xargs egrep mystring

有两个问题与您的版本:

首先*.txt将首先由外壳扩展,使您的文件的列表中,结束在当前目录中.txt ,所以举例来说,如果你有以下几点:

[dsm@localhost:~]$ ls *.txt
test.txt
[dsm@localhost:~]$ 

find命令会变成find . -name test.txt find . -name test.txt 。 刚刚尝试以下说明:

[dsm@localhost:~]$ echo find . -name *.txt
find . -name test.txt
[dsm@localhost:~]$ 

其次egrep不带文件名从STDIN 。 将它们转换为参数,你需要使用xargs



Answer 3:

find . -name *.txt | egrep mystring

这将无法正常工作egrep将搜索mystring所产生的输出中find . -name *.txt find . -name *.txt这只是路径*.txt文件。

相反,你可以使用xargs

find . -name *.txt | xargs egrep mystring


Answer 4:

你可以使用

find . -iname *.txt -exec egrep mystring \{\} \;


Answer 5:

这里,将返回的所有文件路径的例子*.log具有与开头的行文件ERROR

find . -name "*.log" -exec egrep -l '^ERROR' {} \;


Answer 6:

有一个从egrep的,你可以使用递归选项

egrep -R "pattern" *.log


Answer 7:

如果你只想要的文件名:

find . -type f -name '*.txt' -exec egrep -l pattern {} \;

如果你想要的文件名和比赛:

find . -type f -name '*.txt' -exec egrep pattern {} /dev/null \;


文章来源: how to find files containing a string using egrep
标签: linux find grep