
Пример. У меня есть слово, которое я ищу, скажем"кот". И я знаю, что слово может быть расположено где угодно в текущем рабочем каталоге. Поэтому я используюгрэп -р, и это дает результаты в следующем виде:
./example_root/[dir1|dir2]/[SOME_PROBITRARY_SUBPATH]/cat_file,
где
cat_file
это файл, который содержит слово"кот". Что делать, если меня интересует только
/example_root/dir1/[любой_путь]
префикс для моего пути? Как мне сказать емугрэп?
решение1
я бы попробовал
grep -rl cat directory | xargs dirname
где
grep -rl cat directory
рекурсивный поиск (-r
) cat в каталоге и (-l
) lisy-файлах.| xargs dirname
каждый файл «отдается»dirname
, который удаляет часть файла.
решение2
Ответ @Kusalananda в комментариях - это то, что я хотел: просто сделай
grep -r 'cat' /example_root/dir1/
Однако, если вы хотите получить имена каталогов, в которых находятся слова, следующее (спасибо @Archemar) будет полезным.
grep -rl cat directory | xargs dirname