Некоторые реализации утилиты grep
имеют флаг -I
, который заставляет grep
игнорировать двоичные файлы. Вы также можете использовать -i
для поиска совпадения без учета регистра -и -F
для сопоставления с фиксированной строкой (, а не с регулярным выражением ). Если вы ищете отдельные слова , вам следует использовать -w
, которые есть в некоторых grep
реализациях. Затем, чтобы рекурсивно перейти в подкаталоги, вы можете использовать -R
для рекурсивного поиска файлов и -l
для получения имен файлов, содержащих совпадения с шаблоном. Затем мы хотели бы использовать --include
, если у нас есть GNU grep
, чтобы просматривать только файлы с определенным расширением.
grep -Fil -IRw --include='*.txt' 'ubuntu' /path/to/top/dir
Использованы стандартные опции :-F
, -i
, -l
.
Использовались не -стандартные опции (, поддерживаемые некоторыми grep
реализациями ):-w
, -I
, -R
, --include
.
Использование find
и OpenBSD grep
, которая не имеет --include
и использует --binary-files
вместо-I
(GNU grep
также имеет этот флаг):
find /path/to/top/dir -type f -name '*.txt' \
-exec grep -Fil -w --binary-files=without-match 'ubuntu' {} +
По крайней мере, если это демон запуска -остановки -Debian/Ubuntu, вам не следует цитировать подобные аргументы.
start-stop-daemon --start --exec /usr/sbin/mountd -- -f /etc/exports -p 7792
должно работать. (Когда вы цитируете его, он отправляется в mountd как один командный -строковый аргумент, а не четыре, как должно быть.)