Найти подкаталоги, в которых нет строки в одном из файлов - PullRequest
2 голосов
/ 15 марта 2020

У меня есть каталог с большим количеством подкаталогов в Linux.

В каждом подкаталоге содержится файл с именем variables_list.txt

Теперь в каждом файле variables_list.txt я хочу проверить, присутствует строка или нет.

Например:

если строка похожа на приведенную ниже

export host_name=

Я хочу выяснить все подкаталоги, в которых в файле variables_list.txt нет строки.

Я пробовал как ниже

grep -r -l "export host_name=" .

Это печать всех имен файлов, где присутствует строка.

Я пробовал, как показано ниже

grep -Hrn "export host_name=" 

Это также печатает все файлы имена, в которых присутствует строка с номером строки

Я могу добиться того, чего хочу

1 Ответ

2 голосов
/ 15 марта 2020

Вы можете передать результаты grep в dirname:

grep -v -Z -r -l "export host_name=" .  | xargs -0 dirname

Пример:

$ mkdir {1..10}
$ mkdir 'test dir with space'
$ echo export host_name= >> 2/variables_list.txt
$ echo export host_name= > 3/variables_list.txt
$ echo export host_name= > 4/variables_list.txt
$ echo export host_name= > 5/variables_list.txt
$ echo export host_nname= > 'test dir with space'/variables_list.txt
$ echo export hostt_name= > 3/variables_list.txt
$ find . -name variables_list.txt -exec sh -c 'grep "export host_name=" "$1" >/dev/null || echo "$(dirname "$1")"' sh {} \;
./3
./test dir with space
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...