O argumento de --exclude-dir
é um padrão que é comparado com o nome base de um diretório, ou seja, a parte sem os diretórios pai principais. Por exemplo, --exclude-dir=nesteddir
exclui os dois dir/nesteddir
e otherdir/nesteddir
(e seus subdiretórios).
Não há como excluir um diretório sem excluir outros diretórios com o mesmo nome usando apenas o GNU grep. Você precisa usar um método mais sofisticado de escolher arquivos, por exemplo, o GNU find:
find -path dir/nesteddir -prune -o -type f -exec grep -H 'pattern' {} +