Как искать как в имени файла (найти), так и в файле (grep), используя одну строку кода?

Я почти уверен, что делал это в прошлом (и что где-то есть ответ), но сейчас не могу вспомнить.

Я ищу однострочный для поиска (и возврата / эха) совпадений как в файле имени файла , так и в файле .


Вероятно, проще всего было бы запустить grep и find отдельно друг за другом; но я бы предпочел однострочник ...

... , если не было возможности с точкой с запятой (?) Или другим способом запускать эти инструменты последовательно.


Я не думаю, что решение, которое я найду, будет включать в себя трубопровод | потому что, заимствуя из теорию множеств , меня интересует объединение из двух множеств A и B ( A ∪ B ), а не их пересечение (A ∩ B).

3
задан 1 April 2013 в 20:04

2 ответа

Попробуйте это в своем терминале ( CTRL + ALT + T )

find <here your starting string > -type f -exec grep -l <here place the part of file name> {} \;

Описание вышеуказанной команды :

find snow -type f -> найти все файлы, начиная со снега. find .... -exec -> для каждого найденного элемента выполните следующую команду. Там, где вы обычно размещаете имя файла в вашей команде, поставьте {}. grep -l "String" something -> возвращает имя файла, если в файле обнаружена строка «String».

Кредит: dbasupport.com

0
ответ дан 1 April 2013 в 20:04

Вы правы - вы можете использовать точку с запятой для последовательного запуска списка команд:

$ find . -name 'test'; grep test *

Вы также можете сгруппировать его для запуска одной командой: http: //www.gnu. орг / программное обеспечение / Баш / ручной / html_node / Command-Grouping.html

0
ответ дан 1 April 2013 в 20:04

Другие вопросы по тегам:

Похожие вопросы: