
Я сделал: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
.