Como posso usar o comando find com mais eficiência?

15

Eu queria saber qual é a melhor maneira de usar o comando find de maneira eficiente?

Eu geralmente uso, find [filename] [dir] , o que me dá uma longa lista de nomes de arquivos, nenhum deles relacionado à minha pesquisa.

Eu simplesmente preciso encontrar um arquivo em um diretório específico. Qual é o comando para isso?

    
por Sam007 19.06.2012 / 20:08

1 resposta

23

você costuma dizer onde encontrar a pesquisa e o que procurar. Portanto, a sintaxe dos caminhos para pesquisar e o que você está realmente tentando encontrar é diferente.

Para o caso de uso mencionado, suponha que você queira encontrar o arquivo passwd em /etc :

find /etc/ -name passwd

você está dizendo "começando no etc, procure um arquivo cujo nome seja passwd

se você não especificar critérios (ou "opções" em find language), o que encontrar é, ele inicia no caminho (ou caminhos) especificado e localiza todos os arquivos e diretórios abaixo, recursivamente. Portanto, as opções "filtram" esses arquivos para restringir o que você está procurando.

Encontre todos os arquivos JPG em qualquer lugar no seu sistema de arquivos:

find / -name "*jpg" 

Recomenda-se o uso de citações em suas opções, pois, do contrário, a expansão do shell pode causar dores de cabeça.

Encontre todos os arquivos PDF, independentemente do caso, em Documentos ou Downloads:

find Documents/ Downloads/ -iname "*pdf"

Se você fizer man find e rolar para baixo até TESTES, você encontrará todos os "critérios" que a pesquisa pode usar para restringir sua pesquisa. Você pode pesquisar arquivos com nomes de arquivos específicos, pertencentes a usuários ou grupos específicos, com permissão de arquivo específica, sendo de um tipo específico (por exemplo, -type d encontrará apenas diretórios, enquanto -type f encontrará apenas arquivos simples, exceto diretórios) , arquivos novos ou mais antigos que um número específico de dias (ou minutos), arquivos vazios, executáveis e assim por diante.

Na man page do find, você também encontrará uma seção chamada ACTIONS, que pode seguir os critérios e ser acionada por qualquer arquivo que corresponda a todos os critérios. Assim, você pode ter find fazendo coisas como excluir arquivos que encontrar, executar comandos arbitrários neles e assim por diante.

Mas é claro que a sintaxe básica permanece:

find [starting path(s)] [conditions or criteria]
    
por roadmr 19.06.2012 / 20:25