Como posso pesquisar todos os arquivos (incluindo binários) no diretório atual com a ack
v2?
Quero fazer o mesmo que fazer ack 'foo' **
, mas apenas com um sinalizador, para que funcione se desejar pesquisar todos os arquivos em um diretório específico sem anexar **
.
Diferença entre ack 'foo'
e 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
é sempre melhor do quegrep
. Eu estava errado :).Respostas:
Por padrão, o Ack procura um padrão em todos os arquivos não binários abaixo do diretório atual.
Acredito que versões mais antigas do Ack pesquisariam arquivos binários quando você passasse a
--binary
bandeira para eles . Este sinalizador foi removido. Você pode usar o grep.fonte
Quando você não passa um nome de arquivo para confirmação, ele opera em um conjunto de arquivos padrão interno que exclui arquivos binários não reconhecidos. Se você passar nomes de arquivos, ele procurará em todos os arquivos que você passar. Isso explica a diferença entre
ack foo
eack foo **
.ack 1
No ack 1.x, use o sinalizador
-a
para informar ao ack para não ignorar arquivos cujo tipo ele não reconhece.Você pode criar um alias se desejar que o sinalizador seja mais frequente: adicione a linha
alias ack='ack -a'
no seu~/.bashrc
ou~/.zshrc
. Se você configurar esse alias e quiser chamarack
sem a opção, ligue\ack
(a barra invertida desativa a expansão do alias). Os scripts não são afetados pelo alias, apenas shells interativos.Como alternativa, você pode adicionar a
-a
opção ao seu~/.ackrc
.As correspondências nos arquivos binários serão listadas como "Correspondências nos arquivos binários test1". Não há como desativar esse comportamento sem modificar o próprio Ack (pelo menos adicionar um plug-in).
ack 2
No ack 2.0, a
-a
opção foi removida. O que você pode fazer é definir um tipo que corresponda a todos os arquivos e usar a-k
opção para fazer com que o ack inclua todos os arquivos desse tipo. Observe que os tipos de arquivo são processados em uma ordem imprevisível, pois isso fará com que um conjunto aleatório de tipos binários seja processado como normal, em vez do tipo usual.Dessa forma, as correspondências são impressas mesmo para arquivos que, de outra forma, pareceriam binários. Como acima, você pode adicionar essas opções a um alias ou ao seu
.ackrc
.fonte