Nenhum produto encontrado nessa seleção.
Encontrar arquivos no Linux com o find é, sem sombra de dúvidas, a maneira mais simples e útil para quem precisa procurar coisas dentre milhares de arquivos e pastas diferentes. Além de realizar pesquisas simples, find pode ser bastante complexo em alguns casos, para que você possa encontrar algo bastante específico.
Find não faz apenas pesquisas, este comando pode até mesmo executar outros comandos com os arquivos encontrados, como apagar, renomear, listar permissões ou qualquer tipo de comando que você possa desejar executar em todos os arquivos encontrados.
Lembra daquela foto que você estava procurando e nunca encontrou por causa da bagunça das pastas antigas do seu PC? Find encontra pra você! Lembra aquela música que você só sabe o nome do cantor mas não lembra o nome do arquivo? Find encontra pra você também. Você só vai precisar indicar algumas coisas simples e, dependendo da sua criatividade, find irá fazer todo o trabalho duro que seria necessário para encontrar o que você estava procurando.
Observação: Este artigo trará apenas alguns exemplos sobre a utilização do find, porém, caso não encontre o que deseja, digite o seguinte dentro do terminal do Linux:
man find
E verá um manual completo sobre o comando. Então vamos ao que interessa, que é a procura de arquivos e pastas!
Listando todos os arquivos de um diretório
Se você quiser exibir todos os arquivos de um diretório, acesso o mesmo via terminal e digite somente o comando “find”:
find
Você verá todos os arquivos, incluindo arquivos ocultos que estão presentes no diretório.
Caso a lista seja muito grande e você precise percorrer todos os arquivos encontrados, digite:
find | less
Pressione qualquer tecla para passar linha por linha, ou espaço para pular de página. Quando terminar, pressione “q” para sair.
Se precisar listar todos os arquivos dentro de outro diretório, digite:
find /caminho/do/diretorio/
Utilize ” | less” conforme descrito anteriormente para listar todos os arquivos de maneira que você possa navegar por eles.
Encontrar arquivos específicos
Se você precisa encontrar um arquivo específico dentro de um diretório qualquer, digite:
find /caminho/do/diretorio/ -name "nome-do-arquivo.extensao"
O comando “find” diferencia letras maiúsculas e minúsculas, portanto, caso não queira este comportamento, digite:
find /caminho/do/diretorio/ -iname "nome-do-arquivo.extensao"
Agora o comando deverá encontrar tanto arquivos com letras maiúsculas quanto com letras minúsculas que contenham a expressão indicada.
Utilizando metacaracteres
O comando find também suporta metacaracteres, que formam uma espécie de expressão regular caso você não saiba especificamente o nome do arquivo que deseja. Por exemplo, suponhamos que você queira encontrar todas as fotos com extensão .jpg ou .JPG dentro de um diretório. Para isso digite:
find /diretorio/ -iname "*.jpg"
Perceba que o metacaractere “*” (asterisco) significa “qualquer coisa”. Você também pode utilizar o metacaractere “?” (interrogação) para representar um único caractere, veja:
find /diretorio/ -iname "???2015*.jp?"
No trecho acima, find irá encontrar aquivos que contenham qualquer caractere no lugar dos metacaracteres “?”, o número 2015, qualquer coisa depois de 2015, .jp qualquer caractere.
Listagem invertida
Pode ser que você queira fazer uma pesquisa apenas excluindo algo que você não queira, por exemplo, todos menos os que contém o número 2015, veja:
find /diretorio/ ! -iname "*2015*"
O “!” (exclamação), significa “não”. Ele pode ser substituído por “-not” e você terá o mesmo resultado.
Combinando valores
Você também pode combinar valores com “AND” e “OR” (não especificamente utilizando essas palavras). Para utilizar find com “AND”, ou seja, arquivos que contenham um valor “E” outro valor, simplesmente digite:
find /diretorio/ -iname "valor1*" -iname "*valor2*"
Agora somente arquivos que contenham ambos os valores serão encontrados.
Caso queira encontrar arquivos que contenham um valor “OU” (OR) outro valor, digite:
find /diretorio/ -iname "*valor1*" -o -iname "*valor2*"
Agora serão encontrados arquivos com ambos os valores. Note que com “OR” não é necessário que os dois valores estejam presentes no nome do mesmo arquivo.
Diretórios ou arquivos?
Com o find você também pode especificar se deseja encontrar apenas diretórios (pastas) ou apenas arquivos (files), veja:
# Apenas arquivos find /diretorio/ -iname "valor*" -type f # Apenas pastas find /diretorio/ -iname "valor*" -type d
Para pesquisar em várias pastas de uma vez, digite:
find /diretorio1/ /diretorio2/ -iname "valor*"
Encontrando arquivos por permissão
Se você quiser ver arquivos que têm determinada combinação de permissões, digite:
find /diretorio/ -perm 0777
Você pode pesquisar qualquer combinação de permissões que desejar, conforme o chmod. Como exemplo, você poderia procurar por arquivos executáveis com:
find /bin -perm /a=x
Procurar arquivos de usuários e grupos
Quer encontrar arquivos de um usuário ou grupo específico? Digite:
find /diretorio/ -user usuario -group grupo
Você pode utilizar ambas as opções separadamente.
Procurar arquivos baseando-se em tempo
Caso queira encontrar arquivos baseando-se em tempo, siga os exemplos abaixo:
# Encontra arquivos alterados 10 dias atrás find / -mtime 10 # Encontra arquivos acessados 10 dias atrás find / -atime 10 # Para um range, digite find / -mtime +10 -mtime -10
Procure arquivos por tamanho
Para encontrar arquivos de 50MB, digite:
find / -size 50M
Maiores que 50M:
find / -size +50M
Menores que 50M:
find / -size -50M
Entre 50M e 100M:
find / -size +50M -size -100M
Executando comandos nos arquivos encontrados
Com o “find” você também pode executar comandos nos arquivos encontrados, para isso simplesmente digite:
find / -name "arquivo*" -exec ls -l {} \;
Perceba que o {} significa o caminho do arquivo, e o que vem após “-exec” é o comando a ser executado. Por exemplo, para copiar arquivos, digite:
find /diretorio/ -iname "*arquivo*" -exec cp {} /destino/ \;
Executando como super user
Se você quiser pesquisar pastas das quais você não tem permissões, utilize “sudo”, exemplo:
sudo find / "*.jpg"
Simples assim!
Vídeo tutorial
O vídeo abaixo é um complemento do texto acima:
Link do vídeo: https://youtu.be/VPiNq0jda7Y