Para ag
, a partir de la versión 0.19.2, el valor predeterminado es buscar en directorios y archivos de forma recursiva.
Para buscar múltiples patrones, puede usar una sintaxis similar a ack
ag 'pattern1|pattern2'
buscará tanto pattern1
y pattern2
.
En caso de que no quiera buscar recursivamente, puede establecer la profundidad de búsqueda en 1 con el interruptor --depth NUM
Por lo tanto,
ag 'pattern1|pattern2' --depth 1
solo buscará en el directorio actual ambos patrones.
Esto debería ser suficiente:
ack -R 'string1|string2'
Como -R
es el predeterminado, puede omitirlo:
ack 'string1|string2'
Desde man ack
:
-r , -R , --recurso
Recurse en subdirectorios. Este es el valor predeterminado y solo aquí para compatibilidad con grep. También puede usarlo para desactivar --no-recurseoff.
Si desea obtener el patrón de un archivo, digamos /path/to/patterns.file, puede usar:
ack "$(cat /path/to/patterns.file)"
o equivalentemente:
ack "$(< /path/to/patterns.file)"
No puedo encontrar un equivalente exacto a grep -f
.
El comando ack también puede enlazarse con tuberías. Por ejemplo, el primer ack encuentra archivos que contienen patrón1 luego canalice eso a otro acuse de recibo para buscar solo esos archivos para pattern2
ack -l 'pattern1' | ack -x 'pattern2'
El -l parámetro significa simplemente enumerar los archivos coincidentes (en lugar del texto coincidente). El -x parámetro significa buscar solo los archivos canalizados a él. Esto es similar a reducir los archivos para la siguiente búsqueda de acuse de recibo.
ack -l 'pattern1' | ack -xl 'pattern2' | ack -x 'pattern3'
Este es un Y operador y no el operador OR dado en las otras soluciones.