Nota: Este artigo foi publicado originalmente em 2013. Alguns passos, comandos ou versões de software podem ter mudado. Consulte a documentação atual das Man Pages para as informações mais recentes.
Neste guia passo a passo, você aprenderá a encontrar um arquivo no Ubuntu usando critérios complexos (ou não).
Como: Encontrar um arquivo no Ubuntu usando critérios complexos (ou não)
Às vezes você precisa encontrar um arquivo e tudo que sabe é a extensão ou o início do nome do arquivo. Uma busca poderosa e flexível para procurar em todos os subdiretórios por arquivos que correspondam a um critério é importante. O Ubuntu vem com esse comando que permite procurar por um nome de arquivo exato ou usar um caractere curinga para especificar um critério. Cobriremos apenas o básico, mas saiba que o comando find tem mais opções para especificar critérios mais concretos se você desejar.
Usuários do Windows acharão que o comando find é o mais parecido com o comando dir (que eu continuo tentando usar mesmo não estando em um Windows Server aqui… rs).
Aqui está a sintaxe: find
find / -type f -iname "MeuArquivo.Ext" é usado quando você sabe o nome exato. Substitua MeuArquivo.Ext pelo nome do seu arquivo.
find / -type f -iname "MeuArqu*" se você quiser encontrar mais arquivos com um caractere curinga.
Evite a opção -type se quiser buscar diretórios etc.
Aqui estão alguns exemplos para ajudá-lo a usar o find em cenários comuns:
Cenários básicos:
I. Encontrar todos os arquivos Zip em um diretório
find /home -name '*.zip'
II. Encontrar todos os arquivos MP3 e AAC em um diretório
find /home/MinhaMusica -name '*.mp3' -o -name '*.aac'
III. Encontrar todos os arquivos MP3 e AAC em um diretório usando busca sem diferenciar maiúsculas/minúsculas
find /home/MinhaMusica -iname '*.Mp3' -o -iname '*.aAc'
Cenários com critérios combinados:
IV. Encontrar todos os filmes que usam mais de 500 MB de espaço
find /home/ -iname '*.avi' -o -iname '*.mpeg' -a -size +500M
V. Encontrar todos os backups grandes feitos nas últimas 2 semanas
find /home/ -iname '*.zip' -o -iname '*.bak' -a -size +300M -mtime -14
Canalizar a saída para executar uma ação no conjunto de resultados
Nos exemplos a seguir, observe o seguinte:
- ’{}’ corresponde ao arquivo que foi encontrado
- ’ ;’ termina a instrução exec. Note que há um espaço antes da barra.
VI. Encontrar todos os diretórios e configurar suas permissões para 755
find /usr/share/MeuSiteWP/ -type d -exec chmod 755 {} \;
VII. Encontrar todos os arquivos e configurar suas permissões para 644
find /usr/share/MeuSiteWP/ -type f -exec chmod 644 {} \;
VIII. Encontrar todos os arquivos de backup grandes (maiores que 300 MB neste caso) com mais de 14 dias e movê-los para uma nova pasta
find /home/ -iname '*.zip' -o -iname '*.bak' -a -size +300M -mtime +14 -exec mv '{}' /meu/arquivo/backups/ \;
Aqui está uma cópia da página man do find:
FIND(1) FIND(1)
NOME
find - buscar arquivos em uma hierarquia de diretórios
SINOPSE
find
DESCRIÇÃO
Esta página do manual documenta a versão GNU do find. O GNU find busca
na árvore de diretórios enraizada em cada nome de arquivo fornecido, avaliando a
expressão dada da esquerda para a direita, de acordo com as regras de precedência
(veja a seção OPERADORES), até que o resultado seja conhecido (o lado esquerdo
é falso para operações and, verdadeiro para or), nesse ponto o find passa
para o próximo nome de arquivo.
Se você está usando o find em um ambiente onde a segurança é importante
(por exemplo, se você está usando-o para procurar diretórios que são graváveis
por outros usuários), você deve ler o capítulo "Considerações de Segurança"
da documentação do findutils, que se chama Finding Files e vem com o findutils.
Resumo
Você aprendeu com sucesso a encontrar um arquivo no Ubuntu usando critérios complexos (ou não). Se encontrar algum problema, verifique os pré-requisitos e certifique-se de que seu ambiente está configurado corretamente.