Я искал везде, но не нашел, как вернуть содержимое файла, которое соответствует заданным словам или регулярному выражению.
cat /tmp/*.txt | grep "strings"
Вы только что значит grep файл (ы) вместо () cat без толку ИНГ его / их к grep
grep strings /tmp/*.txt
Что делает cat , так это объединяет все файлы *.txt в один большой "файл". Если cat несколько файлов grep поэтому будет видеть только один вход без реального имени, это все ваши файлы в сочетании, подаваемые через трубу. Это не даст вам имена файлов, так как вы в основном сделали все одним большим файлом.
Если вы хотите, чтобы grep только возвращал совпадающие файлы, используйте параметр -l :
grep -l strings /tmp/*.txt