Поиск файлов по регулярному выражению и возврат, какие файлы содержат совпадения

0

Я искал везде, но не нашел, как вернуть содержимое файла, которое соответствует заданным словам или регулярному выражению.

cat /tmp/*.txt | grep "strings"
Хулио Фонг
источник

Ответы:

4

Возможно , вы имели в виду только в grepфайл (ы) вместо () без толка catИНГ его / их к grep?

grep strings /tmp/*.txt

Что catозначает, что он объединяет все *.txtфайлы в один большой «файл». Если у вас catнесколько файлов, то grepвы увидите только один вход без реального имени - это все ваши файлы, объединенные и переданные по каналу. Это не даст вам имена файлов, так как вы в основном сделали все одним большим файлом.

Если вы хотите grepвернуть только совпадающие файлы, используйте -lпараметр:

grep -l strings /tmp/*.txt
slhck
источник
Если вы хотите найти string_s_ (более одного), разделите их либо \|(без -Eопции), либо |-Eопцией), то есть grep 'foo\|bar'или grep -E 'foo|bar'.
Уве
ack - альтернативный инструмент, который отлично подходит для такого рода вещей
Ciclamino