如何使用单个命令从多个文件中搜索多个字符串。可以使用 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}