Использование find и grep в командной строке linux для поиска файлов с определенным пользовательским и текстовым контентом?

Я пытаюсь найти файл, который принадлежит определенному пользователю, который также содержит определенную строку текста. Например, я хочу найти файл, который принадлежит пользователю root, и содержит текст «hello there».

Я знаю, что я могу искать текст в файлах, используя grep, например:

grep -irl "hello there" /directory1

И я знаю, что могу искать файлы, принадлежащие пользователю с определенными расширениями:

find -user root -name "*.txt"

Есть ли способ объединить эти две команды?

Всего 1 ответ


Вызовите grep один раз со всеми соответствующими файлами:

find -user root -name "*.txt" -exec grep -il "hello there" {} +

Или вызовите grep -q один раз для каждого файла и -print файлы, которые соответствуют.

find -user root -name "*.txt" -exec grep -iq "hello there" {} ; -print

( -exec может использоваться как тест, как -user или -name . Если команда завершается успешно, выполняется тест -exec и -print .)


Есть идеи?

10000