Excluir subdirectorio que no funciona con el comando grep

Excluir subdirectorio que no funciona con el comando grep

Esto funciona para mí, ya que excluye el directorio "foo" del directorio raíz de la búsqueda:

grep -rn --exclude-dir=foo 'custom'

Sin embargo, esto no funciona:

grep -rn --exclude-dir=foo/bar 'custom'

Pero todavía se busca en el directorio "foo/bar". También lo probé con comillas:

grep -rn --exclude-dir='foo/bar' 'custom'

Estoy usando Ubuntu 20.

Actualizar

Aunque no es perfecto, utilicé esta solución alternativa:

grep -rn 'custom'|grep -v 'foo/bar'

Esto no podrá encontrar líneas que contengan "foo/bar" y "custom".

Respuesta1

Me encontré con el mismo problema, lo resolví llamando

grep -rn --exclude="**/foo/**" 'custom'

Respuesta2

Utilice este operador "*variable*"como comodín que coincida con cualquier directorio que desee excluir de la búsqueda grep.

En tu caso,

grep -rn --exclude-dir={"*foo*"} 'custom'excluirá el directorio o subdirectorio con un nombre de 'foo'.

grep -rn --exclude-dir={"*foo*","*bar*"} 'custom'excluirá cualquier directorio y subdirectorio con un nombre de 'foo' y 'bar'.

información relacionada