如何用一个命令从多个文件中search多个string。 可能是使用grep或find,或者在Linux或Solaris中是否有其他的
find $BASEDIR -type f -exec egrep 'string1|string2|string3' $file /dev/null \;
其中$BASEDIR是search操作的根。 你也可以使用egrep -R来获得聪明,但是我更喜欢find,因为我可以通过添加-name foo\* ,- -mtime -100或者类似的限定词来select文件。
MadHatter的解决scheme肯定会起作用,然而,更简单的命令是使用(e)grep的recursion标志。 如:
egrep -r 'regex1|regex2' /foo/bar/*
根据考虑上面的层次结构中的文件集合是更方便的,还是使用shell globing的有限集合:
egrep 'regex1|regex2' /foo/bar/{file1,file2}