2016-08-20 3 views
-1

Существует каталог, который содержит 100 текстовых файлов. Я использовал Grep для поиска заданного текста в директории следующим образом:Как узнать, какой файл хранит результат grep?

cat *.txt | grep Ya_Mahdi 

и Grep показывает Ya_Mahdi.

Мне нужно знать, какой файл содержит текст. Является ли это возможным?

+0

Что 'человек grep' сказать? –

ответ

4

Просто избавиться от cat и предоставить список файлов в grep:

grep Ya_Mahdi *.txt 

Хотя это, как правило, работают, в зависимости от количества .txt файлов в этой папке, список аргументов для Grep может получить слишком большой.

Вы можете использовать find для решения пуленепробиваемого:

find --maxdepth 1 -name '*.txt' -exec grep -H Ya_Mahdi {} + 
+0

Это не печатает имя файла. – hek2mgl

+0

@ hek2mgl Это зависит от версии grep, которую использует OP. Я запускаю Mac OS X, а встроенный grep (grep (BSD grep) 2.5.1-FreeBSD) печатает имя файла, если в качестве ввода предусмотрено несколько имен файлов. Единственный случай, когда это не так, - это предоставить вам только один файл *. Вы уверены, что вы протестировали его с более чем одним файлом, соответствующим * .txt? –

+0

Я уверен, что это не зависит от версии grep. Проблема в том, что у вас установлена ​​ваша переменная 'GREP_OPTIONS', и она содержит' -H' - или 'grep' - это псевдоним в вашей оболочке. (Try/bin/grep в последнем случае) – hek2mgl

Смежные вопросы