solo regulares regular probar online numeros letras expresiones expresion especiales espacios espacio ejemplos caracteres blanco alfanumerico regex ack

regex - probar - ack: excluye directorios específicos de búsqueda a través de expresiones regulares



probar expresiones regulares (4)

¿Cómo ignoro directorios específicos a través de RegEx con ack ?

Puedo usar la opción --ignore-dir , pero esto no me permite especificar un RegEx. Quiero poder ignorar cualquier directorio, que tenga las palabras test o tests o patrones más complicados en su nombre.

También probé una mirada negativa detrás de

ack -G ''(?<!test)'' pattern

Pero esto no funciona. No excluye los directorios de test .



En el interés de la gente que usa una versión pre-1.96 de ack (como yo), puedes usar expresiones regulares para hacer esto. Aquí hay un ejemplo:

ack --java ''text-pattern'' -G ''^((?!(test|target)).)*$''

Esto buscará el text-pattern en todos los archivos Java recursivamente (de.) Que NO tienen las palabras test o target en su ruta.


En versiones recientes de ack, puede usar expresiones regulares con --ignore-dir .

De este hilo :

Sí, en 2.15_01 agregamos:

  • ack ahora admite --ignore-dir = match: .... Gracias, Ailin Nemui! (GitHub ticket # 42)

Enlace de GitHub: https://github.com/petdance/ack2/issues/42

Lamentablemente, creo que esto solo admite la coincidencia con el nombre del directorio base, no con la ruta completa.

Por ejemplo, no puede hacer coincidir una ruta como ".*/docs/generated/.*" .

Para eso, vea el (aún abierto) número 291 de GitHub .


Use la opción no documentada "--invert-file-match" (versión ACK en mi sistema: 1.96):

$ ack pattern -G ''test|tests'' --invert-file-match

Bueno, está algo documentado:

$ ack --help|grep invert -v, --invert-match Invert match: select non-matching lines --invert-file-match Print/search handle files that do not match -g/-G.

No está documentado en su perldoc.