O comando find percorre uma árvore de diretórios e testa cada entrada segundo critérios como nome, tipo, tamanho ou data de modificação.
Linha de Comando · Lição 14
find
Aprenda a pesquisar árvores de diretórios por nome, tipo, tamanho e data e a agir sobre correspondências verificadas.
Escolha de Onde Pesquisar
A sintaxe básica é:
find [PATH] [EXPRESSION]
O caminho escolhe o ponto inicial, e a expressão seleciona ou atua nas entradas abaixo dele.
Este comando pesquisa /home e seus descendentes em busca de entradas chamadas puppies.jpg:
$ find /home -name puppies.jpg
A recursão é o comportamento padrão. Use . como caminho inicial para pesquisar a árvore do diretório atual.
Qual comando pesquisa o diretório atual e seus descendentes por entradas chamadas notes.txt?
Correspondência de Nomes e Tipos
O teste -name aceita um nome-base exato ou um padrão no estilo do shell. Coloque padrões curingas entre aspas para que o shell atual os forneça inalterados a find:
$ find . -name "*.txt"
Sem as aspas, o shell pode expandir *.txt no diretório atual antes que find seja iniciado. Use -iname no lugar de -name quando a correspondência não deva diferenciar maiúsculas de minúsculas.
Acrescente -type d para selecionar diretórios ou -type f para selecionar arquivos comuns:
$ find /home -type d -name MyFolder
Os dois testes precisam ser verdadeiros: a entrada deve ser um diretório e seu nome-base deve ser MyFolder.
Qual comando encontra arquivos comuns cujos nomes terminam em .txt abaixo do diretório atual?
Correspondência por Tamanho e Data de Modificação
Use -size com + para tamanhos maiores que a unidade indicada ou - para menores:
$ find . -type f -size +10M
$ find . -type f -size -1k
Aqui, M maiúsculo representa unidades de 1.048.576 bytes, enquanto k minúsculo representa unidades de 1.024 bytes. find arredonda os tamanhos para cima na unidade escolhida antes de aplicar a comparação numérica; portanto, o comportamento nos limites se baseia nessas unidades.
Use -mtime para testar a quantidade de períodos completos de 24 horas desde a modificação do arquivo:
$ find . -type f -mtime -7
$ find . -type f -mtime +30
-mtime -7 corresponde a um valor menor que 7, enquanto -mtime +30 corresponde a um valor maior que 30. Como são usados períodos completos de 24 horas, esses testes não se baseiam na virada do dia do calendário.
Qual comando encontra arquivos comuns abaixo de . cuja idade de modificação é inferior a sete períodos completos de 24 horas?
Exibição e Ações sobre as Correspondências
Se nenhuma ação for fornecida, o GNU find exibe os caminhos correspondentes. Você pode escrever -print explicitamente para deixar clara a ação da expressão:
Exiba as correspondências explicitamente:
$ find . -name "*.log" -print
Use -exec para executar outro comando nas correspondências:
$ find . -name "*.log" -exec ls -l {} \;
Na forma com \;, {} é substituído por um caminho correspondente em cada invocação do comando. O ponto e vírgula encerra a ação -exec e recebe uma barra invertida para que o shell o forneça a find.
Antes de usar uma ação destrutiva como -delete ou um comando -exec que altere arquivos, execute os mesmos testes com -print e inspecione todos os resultados. Um caminho inicial mais restrito e -maxdepth N também podem limitar a pesquisa.
Você está desenvolvendo um comando find que talvez exclua arquivos .log antigos mais tarde. O que deve fazer primeiro?
Em find . -name "*.log" -exec ls -l {} \;, o que {} representa?
Mensagens de permissão negada normalmente indicam que a conta atual não consegue pesquisar parte da árvore. Prefira um caminho inicial mais restrito e relevante; não acrescente privilégios elevados sem compreender e pretender o acesso ampliado.
Para praticar a criação de expressões de pesquisa, experimente estes laboratórios:
- Comando find do Linux: Pesquisa de Arquivos — Este laboratório apresenta o comando
find, uma ferramenta versátil para pesquisar e localizar arquivos e diretórios com base em vários critérios. Você praticará o uso defindpara localizar arquivos específicos. - Descoberta de Recursos Críticos do Sistema — Aprenda comandos essenciais para localizar arquivos e executáveis, inclusive
find, e pratique a navegação eficiente pelo sistema de arquivos.
Lição concluída
Você concluiu find
Agora você sabe criar expressões find específicas e verificar os resultados antes de agir.
Escolha o caminho inicial útil mais restrito.
Coloque padrões de nome entre aspas e combine-os com testes de tipo.
Filtre por tamanho ou períodos completos de 24 horas desde a modificação.
Limite a profundidade da recursão quando apropriado.
Exiba e inspecione as correspondências antes de ações destrutivas.
Salve seu progresso
Crie uma conta gratuita para salvar esta lição e continuar em qualquer dispositivo.
Criar uma conta gratuita