Как искать несколько строк из нескольких файлов с помощью одной команды. Может использоваться grep или find, или если есть другие в Linux или Solaris
find $BASEDIR -type f -exec egrep 'string1|string2|string3' $file /dev/null \;
где $BASEDIR
является корнем поисковой операции. Вы также можете поумничать с egrep -R, но я предпочитаю найти, поскольку могу более избирательно подходить к файлам, добавляя -name foo\*
, -mtime -100
или аналогичные квалификаторы.
Решение MadHatter, безусловно, будет работать, однако более простая команда, imho, будет использовать рекурсивный флаг (e) grep. Такие как:
egrep -r 'regex1|regex2' /foo/bar/*
В зависимости от того, что удобнее рассматривать коллекцию файлов в иерархии, выше или как конечный набор, используя подстановку оболочки как:
egrep 'regex1|regex2' /foo/bar/{file1,file2}