Como procurar por arquivos com o Linux?

3

Você conhece uma boa maneira de encontrar um arquivo ou conteúdo por nome de forma recursivamente semelhante à pesquisa de função ms-windows com o Linux? Eu posso fazer find . | grep test.html suspeitando que não é o melhor. Obrigado por qualquer resposta.

Por exemplo, executar find . | grep terms.html dá o meu resultado esperado, enquanto locate terms.html não, embora o locate seja atualizado db - pode ter a ver com isso, é um stick USB que o arquivo está ligado?

    
por Niklas Rosencrantz 01.02.2011 / 18:34

8 respostas

13

O comando é encontrado, assim

 find . -iname '*hellofiles*'

você diz encontrar · localização · -iname significa não diferencia maiúsculas de minúsculas e "" é uma expressão regular se você desejar.

encontrar / home / user -iname '* zip' irá encontrar todos os arquivos zip em / home / user

Se você quiser uma pesquisa mais rápida, você pode usar o locate, existe um utilitário que escaneia o disco regularmente, como toda semana ou dia dependendo de como ele é configurado

locate myfile

e ele irá procurar no banco de dados se updatedb tiver visto myfile em qualquer lugar.

    
por 01.02.2011 / 18:35
2

No caso de pacotes: dpkg -L nome do pacote

ou se você sabe que está em uma pasta específica, adicione o uso do grep, como:

dpkg -L nome do pacote | grep foldername

Por exemplo, você acabou de instalar o Chromium e precisa saber onde está o bin

dpkg -L cromo-navegador | grep bin

    
por 20.11.2012 / 09:57
1

find ./ -name "filename" ou você pode fazer algo como find ./ -name "*.jar" para localizar todos os arquivos com a extensão .jar. Você também pode fazer find ./ -name "*.jar" | xargs grep -n 'main' para encontrar todos os arquivos .jar que contenham um main neles.

    
por 01.02.2011 / 18:36
1

find . -name test.html ou você pode usar curingas também: find . -name \*test.html

    
por 01.02.2011 / 18:36
1

Você pode usar o comando find , se desejar fazer isso por meio de um terminal.

Pipelining find e grep funcionarão, caso contrário find fornecerá algumas opções (como -name e -iname ) para fazer isso:

find DIRECTORY -name test.html
    
por 01.02.2011 / 18:36
1

Existem dois utilitários find e locate . Já que outros sugeriram find , falarei sobre locate .

Você instala um pacote chamado mlocate ou slocate em sistemas mais antigos. Após a instalação, execute o comando updatedb . locate usa um banco de dados para armazenar o caminho para todos os seus arquivos, portanto, a pesquisa é muito mais rápida, mas tem a desvantagem de sair desatualizada com frequência, e o preenchimento do banco de dados pode levar alguns minutos.

Depois de ter o banco de dados preenchido, basta executar: locate file . Se você apenas usar o nome do arquivo, ele procurará pelo arquivo a partir de / . Então você pode obter /etc/file e /usr/share/file . Se você quiser apenas limitá-lo ao seu diretório home, use isto:

 locate file | grep /home/user

Os curingas não funcionam com locate por qualquer motivo.

    
por 01.02.2011 / 18:41
1

Eu não sei a função de pesquisa do Windows, mas quando você está procurando uma alternativa para | grep * então você pode tentar:

find /* -name "keyword"
O

slocate também deve se encaixar nos seus critérios.

Atenciosamente, / dley

    
por 01.02.2011 / 18:42
1

find tem várias opções que permitem encontrar arquivos por nome, expressões regulares ou até mesmo critérios mais complexos, como tamanho ou propriedade. Por exemplo,

find . -iname '*.txt'

Veja também a seção de exemplo na página de manual vinculada.

Dito isso, find tem a clara desvantagem de pesquisar o sistema de arquivos cada vez que você o chama. Por outro lado, o utilitário locate , em suas muitas variações, usa um banco de dados regularmente atualizado do arquivos no seu sistema.

    
por 01.02.2011 / 18:42