Кажется, что - exclude-dir
сравнивается только с базовым именем пути, то есть с текущим подкаталогом. Таким образом, путь / к / файлу никогда не будет соответствовать dir "file", но будет только - exclude-dir = file
или глобальная версия, например - exclude-dir = * ile
.
Обычной альтернативой является использование find
, например, если он обрабатывает опцию -path
:
find . -path ./path/to/file -prune -o -type f -exec egrep -l 'hello' {} +
Шаблон после -path
должен соответствовать пути включая ваш начальный каталог, но вы
можете использовать globs для упрощения, например '* путь * файл *'
, где * также соответствует /.
В противном случае вы можете прибегнуть к find | sed | xargs egrep
.