Відповіді:
Після деяких випробувань я думаю, що grep -irn 'string' --include '*.h'
це зручніше
foobar.h
у поточному каталозі, та спробуйте його ще раз.
S і ін (включити) ш ELL неавтоматичного іонів globstar
за допомогою команди
shopt -s globstar
Це призведе до того **
, що компонент імені файлу означатиме все тут і нижче. Отже, path/**
означає все, що знаходиться в path
каталозі
та його підкаталогах . (Тут вам не потрібно вводити ./
.) Потім ви можете використовувати
grep -in "string" path/**/*.h
шукати всі .h
файли в і під path
.
Ви можете у nПравільно встановіть опції з shopt -u
.
find /path -iname "*.h" -exec grep -inH "string" "{}" \;
-exec
... +
теж добре.
"string"
у свою відповідь!
Якщо ви можете встановити щось на своєму пристрої, я пропоную використовувати ack .
Ви можете робити саме те, що вам потрібно, і багато іншого. Для вашого випадку використання ви можете:
# Depending of your system, you have to use one or the other
ack --hh -i string path
ack-grep --hh -i string path
Щоб знайти, які фільтри файлів підтримуються спочатку, запустіть команду ack --help=type
.
Як щодо цього?
find -L ./path -name "*.h" -exec grep -in "string" {} \;
Пояснення:
find
командоюfind
командиfind
з -exec
, це специфікатор вичерпаним команди"*.h"
працює? Я б подумав, що це потрібно'*.h'
"*.h"
цитати.