Tutoriel Linux

Localizar no Linux: como encontrar um arquivo sem precisar pesquisar manualmente em todo o servidor.

Débutant5 min de lecture
À retenirLinux n'est pas réservé aux experts. Le bon point de départ : une distribution accessible, une sauvegarde propre et quelques commandes comprises.

Quando você sabe que um arquivo existe em algum lugar no servidor, mas não sabe onde, a tentação costuma ser procurar pasta por pasta. Péssima ideia. No Linux, encontrar É feito para isso: pesquisar por nome, tipo, tamanho, data, direitos e, em seguida, agir somente quando o resultado for claro.

Recomendo que você o utilize com cautela, especialmente em um servidor de produção. Um comando `find` executado como root pode examinar um número enorme de arquivos, exibir erros de permissão e sobrecarregar o disco desnecessariamente. A ideia não é digitar o comando mais abrangente possível, mas sim restringir rapidamente a área de busca.

Tux usa uma lupa para procurar arquivos em um servidor Linux.
O comando `find` permite localizar um arquivo em uma árvore de diretórios do Linux sem precisar pesquisar manualmente em cada pasta.

Comece procurando no lugar certo.

O formulário básico é simples: você especifica uma pasta inicial e, em seguida, um critério de pesquisa.

encontrar /etc -nome "ssh_config"

Aqui, o Linux está procurando um arquivo chamado ssh_config Em /etc e suas subpastas. Se você já sabe que o arquivo deve estar em um local específico, comece por esse local. É mais rápido, mais legível e evita que você escaneie todo o sistema desnecessariamente.

Para ignorar a distinção entre maiúsculas e minúsculas, use -iname :

encontrar /var/www -iname "*.conf"

Se você começar pela raiz, espere ver mensagens. Permissão negadaIsso não é necessariamente um problema. Você pode ocultá-los, mas não faça isso sistematicamente se estiver procurando especificamente por uma questão de direitos autorais.

encontrar / -nome "nginx.conf" 2>/dev/null

Limitar a pesquisa por tipo de arquivo

Em um servidor, um nome pode corresponder a um arquivo, uma pasta, um link simbólico ou algo mais. Adicione -tipo Para evitar resultados desnecessários.

encontrar /var/log -tipo f -nome "*.log"
encontrar /var/www -tipo d -nome "cache"
encontrar /usr/bin -tipo l -nome "python*"

-tipo f tem como alvo arquivos padrão. -tipo d pastas de destino. -tipo l Ele tem como alvo links simbólicos. Esse pequeno filtro evita muito ruído nos resultados.

Você também pode limitar a profundidade quando não quiser descer muito na árvore:

encontrar /var/www -maxdepth 2 -type d -name "cache"

Isso é muito útil em sites, backups ou pastas de usuários com muitos subdiretórios.

Localize os arquivos grandes antes de excluir qualquer coisa.

Quando um servidor está ficando sem espaço em disco, o comando `find` pode ajudar a localizar arquivos grandes. Comece listando-os, não excluindo-os.

encontrar /var -tipo f -tamanho +100M -imprimir
encontrar /home -tipo f -tamanho +1G -imprimir

Para exibir os tamanhos de forma legível, você pode executar ls -lh em cada resultado:

encontrar /var -tipo f -tamanho +100M -exec ls -lh {} +

Se seu objetivo é liberar espaço, não vá direto para rmPrimeiro, verifique o que você encontrou, especialmente em /var/lib, /var/log ou pastas de aplicativos. Um arquivo de banco de dados ou cache pode exigir um método de limpeza específico.

Para uma abordagem mais abrangente sobre o assunto, você pode complementá-la com o guia sobre Comandos a serem usados ​​quando o espaço em disco do Linux estiver cheio.

Pesquisar por data de modificação

Para descobrir o que mudou recentemente, as opções de data são muito úteis. Por exemplo, arquivos modificados nos últimos 7 dias:

encontrar /etc -tipo f -mtime -7

Arquivos modificados há mais de 30 dias:

encontrar /var/log -tipo f -mtime +30

-mtime Funciona em dias. Para uma pesquisa mais refinada, veja também -mmin, que funciona em minutos:

encontrar /tmp -tipo f -mmin -60

Isso é útil após uma alteração de configuração, uma atualização ou um script que gerou arquivos sem indicar claramente onde eles foram armazenados.

Filtrar por direitos sem violar permissões

A função Encontrar também pode pesquisar com base em permissões. Por exemplo, para encontrar scripts executáveis ​​em uma pasta:

encontrar /usr/local/bin -tipo f -perm /111

Para identificar arquivos que são muito fáceis de acessar, você pode procurar arquivos que sejam editáveis ​​por qualquer pessoa:

find /var/www -type f -perm -002 -exec ls -lh {};

Não corrija uma lista de resultados com um chmod global sem entender o contexto. Permissões no Linux podem levar rapidamente a falhas de aplicativos. Se precisar revisar este ponto, o artigo sobre chmod recursivo no Linux Explica precisamente por que precisamos permanecer cautelosos.

Usando -exec sem desencadear uma catástrofe

-exec Permite executar comandos nos arquivos encontrados. É uma ferramenta poderosa, e por isso é onde você pode causar mais danos.

Comece sempre por mostrar os resultados:

encontrar /tmp -tipo f -nome "*.tmp" -imprimir

Somente então, se a lista estiver correta, você poderá solicitar a confirmação antes da exclusão:

encontrar /tmp -tipo f -nome "*.tmp" -exec rm -i {} +

O casal {} representa os arquivos encontrados. O + O comando `find` solicita que vários resultados sejam agrupados no mesmo comando sempre que possível, evitando assim a necessidade de iniciar um processo para cada arquivo.

encontrar /var/log -tipo f -nome "*.log" -exec ls -lh {} +

Meu conselho é simples: não exclua nada automaticamente até revisar a lista. Em um servidor, economizar um segundo não compensa restaurar um backup.

Um método rápido antes de iniciar a produção do Find.

  • Comece com o arquivo mais preciso possível;
  • adicionar -tipo f, -tipo d Ou -tipo l O mais breve possível;
  • usar -maxprofundidade Se você quiser evitar uma pesquisa muito profunda;
  • exibir os resultados com -imprimir Ou -exec ls -lh antes de agir;
  • Reserve os comandos destrutivos para o final, com confirmação, se possível.

Para obter documentação de referência, você pode consultar o manual do GNU Findutils em encontrar e a página encontrar(1) do manual 7. Se precisar seguir os registros após encontrar um arquivo, consulte o guia em cauda no Linux Esse método o complementa bem.

sudo apt update && sudo apt upgrade