Parece que --exclude-dir
é comparado apenas com o nome de base do caminho, ou seja, o subdiretório atual. Portanto, path / to / file nunca corresponderá ao "arquivo", mas apenas --exclude-dir=file
, ou uma versão glob, por exemplo --exclude-dir=*ile
.
A alternativa usual é usar find
, por exemplo, se ele manipular a opção -path
:
find . -path ./path/to/file -prune -o -type f -exec egrep -l 'hello' {} +
O padrão após -path
precisa corresponder ao caminho, incluindo seu diretório inicial, mas você
pode usar globs para simplificar, por exemplo, '*path*file*'
, onde * corresponde / também.
Caso contrário, você pode recorrer a find | sed | xargs egrep
.