¿Cómo puedo buscar todos los archivos (incluido el binario) en el directorio actual con ack
v2?
Quiero hacer lo mismo que hacer ack 'foo' **
, pero solo con un indicador, por lo que funciona si quiero buscar todos los archivos en un directorio específico sin agregarlos **
.
Diferencia entre ack 'foo'
y ack 'foo' **
:
$ mkdir test && cd test
$ printf '\x00\x01foo1\x00' > test1
$ printf 'foo2' > test2
$ ack 'foo'
test2
1:foo2
$ ack 'foo' **
test1
1:foo1
test2
1:foo2
ack
siempre es mejor quegrep
. Estaba equivocado :).Respuestas:
Por defecto, Ack busca un patrón en todos los archivos no binarios debajo del directorio actual.
Creo que las versiones anteriores de Ack buscarían a través de archivos binarios cuando les
--binary
pasaras la bandera. Sin embargo, esta bandera ha sido eliminada. Es posible que pueda usar grep en su lugar.fuente
Cuando no pasa ningún nombre de archivo a ack, funciona en un conjunto de archivos predeterminado incorporado que excluye los archivos binarios no reconocidos. Si pasa nombres de archivo, busca en todos los archivos que pasa. Esto explica la diferencia entre
ack foo
yack foo **
.ack 1
En ack 1.x, use la bandera
-a
para decirle a ack que no omita archivos cuyo tipo no reconoce.Puede crear un alias si desea ese indicador con mayor frecuencia: agregue la línea
alias ack='ack -a'
en su~/.bashrc
o~/.zshrc
. Si configura este alias y desea llamarack
sin la opción, llame\ack
(la barra invertida desactiva la expansión del alias). Los scripts no se ven afectados por el alias, solo los shells interactivos.Alternativamente, puede agregar la
-a
opción a su~/.ackrc
.Las coincidencias en archivos binarios se mostrarán como "coincidencias de prueba de archivo binario1". No hay forma de deshabilitar este comportamiento sin modificar el propio Ack (al menos agregar un complemento).
ack 2
En ack 2.0, la
-a
opción ha sido eliminada. Lo que puede hacer en su lugar es definir un tipo que coincida con todos los archivos, y usar la-k
opción para hacer que ack incluya todos los archivos de ese tipo. Tenga en cuenta que los tipos de archivo se procesan en un orden impredecible, ya que esto provocará que un conjunto aleatorio de tipos binarios se procese de forma normal en lugar de como el tipo habitual.De esta forma, las coincidencias se imprimen incluso para archivos que de otro modo se verían binarios. Como se indicó anteriormente, puede agregar estas opciones a un alias o a su
.ackrc
.fuente