Comando find no Linux (localizar arquivos) [Guia Básico]
O comando find procura por arquivos e diretórios diretamente no sistema de arquivos. Dependendo do tamanho do sistema de arquivos, esse comando pode ser muito demorado.
Sua sintaxe básica é:
$ find [caminho] [expressão]
Você deve indicar um ponto de início da busca na árvore de diretórios do Linux. Se quiser que ele comece no raiz, indique “/“. Se quiser que a busca inicie a partir do diretório corrente, use como caminho “./” ou simplesmente ponto “.“.
O find permite uma infinidade expressões como opções de busca, tais como nome, tamanho, data de criação de arquivo, data de acesso, por tipo de arquivo, permissões, etc.
Exemplos:
Procura pelo arquivo texto.txt a partir do raiz (/), do tipo arquivo (f):
$ find / -name texto.txt -type f
Procura por todos os arquivos com extensão .txt a partir do diretório corrente (.):
$ find . -name “*.txt”
Procura pelo diretório “usuarios” a partir do diretório corrente, independente se está escrito com letras maiúsculas ou minúsculas:
$ find . -iname usuarios -type d
Procura por arquivos que não terminam com .html a partir do diretório corrente:
$ find . -type f -not -name “*.html”
O find também permite executar um comando com a lista de arquivos que ele encontrar. Neste exemplo o find copia todos os arquivos .mp3 encontrados a partir do diretório corrente para /tmp:
$ find . -type f -name “*.mp3” -exec cp {} /tmp/ \;
Apaga todos os diretórios BACKUP encontrados a partir do diretório corrente:
$ find . -type d -name BACKUP -exec rm -r {} \;
Procura os arquivos modificados nos últimos 7 dias:
$ find . -mtime -7 -type f
Procurar arquivos editados antes de 5 dias
$ find -mtime +5
Apaga os arquivos de backup com mais de 15 dias:
$ find /backup/ -type f -mtime +15 -exec rm -f {} \;
Apaga todos os arquivos objeto encontrados a partir diretório corrente:
$ find . -name "*.o" -type f -exec rm -f {} \;
Copia todos os arquivos alterados nos últimos 2 dias para o diretório /tmp:
$ find . -type f -mtime -2 -exec cp {} /tmp \;
Também é possível procurar por um arquivo mais recente que um determinado arquivo:
$ find -newer arquivo-fonte.c
Procura arquivos com permissão 0777:
$ find . -type f -perm 0777 –print
Procura todos os arquivos com mais de 50Mb:
$ find / -size +50M
Pode-se combinar as opções, como para procurar arquivos com extensão .php alterados nas últimas 48 horas:
$ find -name '*.php' -mtime -2
O find também pode ser usado para criar uma lista dos arquivos de um diretório, que pode ser ordenada com o comando sort:
$ find | sort
.
./CapituloForm.php
./CapituloList.php
./Form.php
./List.php
./SubcapituloForm.php
./SubcapituloList.php
Conclusão
O comando find é uma ferramenta poderosa para encontrar arquivos, diretórios, baseados em nome, permissões, atributos, tamanho, propriedade (por usuário ou por grupo), etc. Ele pode ser usado para varrer o sistema para encontrar programas com permissões de suid, corrigir permissões, fazer backup, etc.
Aprenda muito mais sobre Linux em nosso curso online. Você pode efetuar a matrícula aqui. Se você já tem uma conta, ou quer criar uma, basta entrar ou criar seu usuário aqui.
Gostou? Compartilhe
Tag:/dev, bash, certificação, certificaçãolinux, code, Comptia, developer, empreendedorismo, exame, freesoftware, gnu, hack, Linux, linuxfan, linuxfun, linuxmint, lovelinux, LPI, LPIC, management, nerd, opensource, php, prova, shell, software, softwarelivre, sql, tech, ti, unix