Cómo usar ack para buscar el nombre del archivo

15

He comenzado a usar ack, que es mucho más rápido que grep. Sin embargo, usando ack, quiero buscar el nombre del archivo en lugar del contenido del archivo. ¿Hay una manera de hacer eso?

Nadal
fuente

Respuestas:

16

Usa la herramienta correcta para el trabajo correcto. Si desea buscar el nombre del archivo, use 'buscar':

$ # search for all *.txt file in current directory
$ find . -iname "*.txt"
Lie Ryan
fuente
1
muy cierto. "una vez que sostienes un martillo en la mano, todo comienza a parecerse a un clavo" :)
akira
2
Bueno, ack (y grep) son mejores porque no tienes que ser explícito sobre las expresiones regulares a menos que quieras. Usualmente solo hago unfind . | ack whatev.ext
Ehtesh Choudhury
Esto funciona para encontrar directorios también.
Pratik Khadloya
1
find y ack se comportan de manera diferente, ya que ack filtra muchos resultados de forma predeterminada (contenido de directorios de control de versiones, objetos compilados en un repositorio de origen) que se incluirían en find. El mejor martillo depende de los resultados que desee.
Joshua Goldberg
1
Esto no responde a la pregunta ...
lajarre
23
ack -g REGEX

Imprimir archivos donde la ruta relativa + nombre de archivo coincide con REGEX

Danil Kutkevich
fuente
1
agregue [^/]*$a su REGEX para buscar solo en el nombre de archivo
simon
7

Estoy de acuerdo en que tiene sentido usar find si solo está buscando archivos * .txt. Sin embargo, ack tiene potentes funciones de detección de tipo de archivo, por lo que puede usar

ack -f --perl

que encontrará todos los archivos Perl, basados ​​en el nombre del archivo (* .pm, * .pl, * .t y * .pod) y la línea shebang.

Andy Lester
fuente
1

Tu puedes hacer :

ack -f | ack "filename.ext"
Olivier
fuente