从多个文件中搜索多个字符串

从多个文件中搜索多个字符串

如何使用单个命令从多个文件中搜索多个字符串。可以使用 grep 或 find,或者 Linux 或 Solaris 中是否有其他命令

答案1

find $BASEDIR -type f -exec egrep 'string1|string2|string3' $file /dev/null \;

其中是搜索操作的根。您也可以巧妙地使用 egrep -R,但我更喜欢 find,因为我可以通过添加、或类似的限定符来$BASEDIR更有选择性地选择文件。-name foo\*-mtime -100

答案2

MadHatter 的解决方案肯定有效,但是,我认为更简单的命令是使用 (e)grep 的递归标志。例如:

egrep -r 'regex1|regex2' /foo/bar/*

取决于将文件集合视为层次结构中的文件集合、上面的文件集合还是使用 shell glob 将其视为有限集是否更方便:

egrep 'regex1|regex2' /foo/bar/{file1,file2}

相关内容