Сочетание совершенно противоположных опций grep

Сочетание совершенно противоположных опций grep

Я сделал:grep -r -H -L txt ~

Иgrep -r -l -L txt ~

Перечисляет ли он все файлы? Потому что я получаю очень длинный вывод.

решение1

Ваши две команды абсолютно одинаковы... они обе рекурсивно проходят по вашему домашнему каталогу и выводят список файлов, которые не содержат шаблон «txt».

Чтобы доказать, что они имеют одинаковый выход, вы можете сделать

diff <(grep -r -H -L txt ~) <(grep -r -l -L txt ~)

Немного разберемся...

grep -r -H -L

такой же как

grep -r -L

-H(print filenames) подразумевается для любого grepвызова, который включает более одного файла. Это то, что -Lделает, поскольку он перечисляет все файлы, которые не соответствуют указанному шаблону.

Следующий...

grep -r -l -L

такой же как

grep -r -L

Это просто связано с тем, что -lи -Lявляются конфликтующими опциями, и в таких случаях последний появившийся флаг переопределяет любой предыдущий конфликтующий флаг(и). (Спасибо@don_crisstiза указание на это.)

Таким образом, по сути, у вас есть grep -r -Lи grep -r -L.

Связанный контент