2015-08-27 4 views
-1

Вот мой текущий код, и я также предпочитаю отображать имя файла с согласованием (если содержимое файла соответствует grep), любые решения оцениваются.как отобразить имя файла во время grep

for file in *.py; 
do grep -n --color 'main' $file; 
done 

BTW, я использую Linux/OS X.

спасибо заранее, Лин

+0

Возможный дубликат [Как использовать grep для отображения только имен файлов (нет совпадений в строке) на linux?] (Http://stackoverflow.com/questions/6637882/how-can-i-use-grep- to-show-just-filenames-no-in-line-matches-on-linux) – msw

ответ

1

Я уверен, что это было здесь раньше, но вам просто нужно дать ему второе имя файла

for file in *.py; 
do grep -n --color 'main' $file /dev/null; 
done 
+0

ваше решение работает для меня и хочет узнать больше, почему добавление/dev/null работает и что вы имеете в виду «дать ему второе имя файла «? –

+1

с grep, вы можете дать ему несколько файлов для поиска сразу. Например, "grep filea fileb filec". Когда вы это сделаете, на выходе будет указано, какой файл содержит совпадение. В этом случае мы «обманули» его./dev/null никогда не будет содержать совпадение, но поскольку мы дали два имени файла grep, он покажет вам, какой файл соответствует. –

+0

"умный". Вы имеете в виду, если мы используем grep только для одного файла, grep никогда не показывает имя файла? –

1

Если вы используете GNU grep, вы можете использовать опцию -H или --with-filename, чтобы заставить его отображать имя файла даже если есть только один аргумент файла.

for file in *.py; do 
    grep -H -n --color 'main' $file 
done 

Оба Linux и OS X используют GNU grep, поэтому он должен работать в обеих средах.

+0

Прохладный! Спасибо, Бармар. –

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