'grep -R string * .txt', даже если у top dir нет файла .txt - PullRequest
4 голосов
/ 23 февраля 2011

Я не помню, когда в grep был введен ключ командной строки для рекурсивного поиска ' -R ', но теперь я не могу представить себе жизнь без него.

Его единственная проблема заключается в том, что если какой-либо каталог в рекурсии не имеет совпадения с подстановочным знаком имени файла, grep -R остановится и не сможет сообщить о каталогах и файлах, которые действительно дают положительные результаты поиска.

Например:

  grep -R skeleton_app *.xml

сообщит только

AndroidManifest.xml:    <application android:label="@string/skeleton_app">

В то время как:

  grep -R skeleton_app *

Сообщит обо всех:

AndroidManifest.xml:    <application android:label="@string/skeleton_app">
Binary file bin/classes.dex matches
Binary file bin/com/example/android/skeletonapp/R$string.class matches
gen/com/example/android/skeletonapp/R.java:        public static final int skeleton_app=0x7f050000;
res/values/strings.xml:    <string name="skeleton_app">Understanding Intents</string>

Мой вопрос: есть ли способ сказать ' grep -R ' , а не , чтобы он остановился при несоответствии имени файла?

Ответы [ 2 ]

13 голосов
/ 23 февраля 2011

Попробуйте:

grep -R --include '*.xml' skeleton_app .
0 голосов
/ 23 февраля 2011

Используйте find в дополнение к grep.

$ find ./ -name "*.txp" -exec grep "string" '{}' \; -print
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...