Я часто нахожу себя в поисках множества кода с использованием grep, чтобы определить, что я ищу. Иногда я получаю список файлов немного длиннее, чем я ожидал. На данный момент я хочу выполнить второй grep, но только поиск по файлам, возвращенным первым поиском grep. Есть ли способ сделать это? Я в основном хочу дать перекрестную ссылку на два поиска grep и получить обратно только те файлы, в которых есть оба результата.
1 ответ
9
grep -lZ "first string" * | xargs -0 grep -l "second string"
Первый
grep
вернет файлы, содержащиеfirst string
.Второй
grep
будет делать то же самое дляsecond string
, но поверх результатов первогоgrep
.Аргумент
-Z
для grep и аргумент-0
для xargs работают вместе, чтобы включить поддержку имен файлов с пробелами.
Редактировать - благодаря Ajedi32:
xargs
позволяет использовать результаты одной команды в качестве аргументов другой.
Из Википедии статьи xargs
«ы, xargs это команда на Unix и большинство Unix-подобных операционных систем , используемых для построения и выполнения командной строки из стандартного ввода.