O comando Find é amplamente utilizado para pesquisar arquivos no Linux. Veja como aplicá-lo no seu dia a dia com o blog da HostGator.

O Linux Find permite executar várias tarefas de administração do sistema com eficiência, como gerenciamento de espaço em disco, operações recursivas de arquivo e backups.

Além de ser um dos comandos Linux, essa funcionalidade é uma ferramenta incrivelmente poderosa! O esforço para aprendê-la pode ser recompensador para quem deseja ou já trabalha com Linux.

Em sua forma básica, o comando find ubuntu é fácil. Porém, ao mesmo tempo, pode se complexificar com o número de opções, testes e ações disponíveis. Pensando nisso, neste artigo, vamos explicar com detalhes como utilizá-lo. Confira!

Sintaxe do Linux Find

O comando de pesquisa do Linux, conhecido como comando find, procura arquivos e pastas com base em critérios definidos por você, além de permitir que seja executada uma ação nos resultados. A sintaxe para encontrar é a seguinte:

  • find <startingdirectory> <opções> <ação>

O diretório a ser pesquisado é o ponto de partida da exploração do find pelos arquivos, o que inclui todos os subdiretórios deste diretório. As “opções” indicam os arquivos a serem buscados, enquanto a “ação” indica o que será feito com cada arquivo encontrado que corresponda aos critérios.

Funcionalidades do Linux Find

Pesquisa por nome

É uma funcionalidade simples do Linux find. A instrução a seguir procura o arquivo “exemplo.txt” no diretório atual:

  • find . -name “exemplo.txt”

./exemplo.txt

Obs.:

  • “.” refere-se ao diretório atual;
  • “-name” especifica os critérios a serem atendidos.

A análise com o teste “-name” distingue maiúsculas e minúsculas, e ignora o arquivo “Exemplo.txt”, por exemplo. Para que sua busca não faça isso, utilize “-iname”:

  • find . -iname “exemplo.txt”

./exemplo.txt

./Exemplo.txt

Para encontrar qualquer arquivo .jpg de imagem no diretório atual, use o padrão genérico “*.jpg”:

  • find . -name “*.jpg”

Também é possível usar o nome do diretório no qual deseja pesquisar. Exemplificando, para localizar todas as imagens .jpg em um diretório “/home” hipotético, basta ordenar:

  • find /home -name “*.jpg”
  • find: `/home/ubuntu/.ssh’: Permission denied

/home/usuario/Moodle2.jpg

/home/usuario/moodle.jpg

/home/me/hello.jpg

  • find: `/home/eu/testfiles’: Permission denied
  • find: `/home/eu/data’: Permission denied

/home/eu/water.jpg

  • find: `/home/eu/.cache’: Permission denied

Caso haja muitos erros de permissões negadas, como exemplificado, pode-se adicionar “2>/dev/null” ao final do comando. Isso direciona as mensagens de erro para o dispositivo “/dev/null” e fornece uma saída mais limpa:

  • find /home -name “*.jpg” 2>/dev/null

/home/usuario/Moodle2.jpg

/home/usuario/moodle.jpg

/home/eu/hello.jpg

/home/eu/water.jpg

Pesquisa por tipo de arquivo

O teste “-type” serve para sondar arquivos por tipo. Os tipos de arquivo podem ser:

  • f – plain files
  • d – directories
  • l – symbolic links
  • b – block devices
  • c – character devices
  • p – named pipes
  • s – sockets

Por exemplo, usar o teste “-type d” listará apenas os diretórios:

  • find . -type d

.

./.ssh

./.cache

./moodle

Pesquisa por tamanho de arquivo

Além do que indicamos acima, pode ser necessário localizar arquivos grandes e excluí-los. A seguir, o teste “-size” é seguido pela string “+1G” para encontrar todos os arquivos maiores que 1 GB, veja:

  • find . -size +1G 

./Microsoft_Office_16.29.19090802_Installer.pkg

./android-studio-ide-183.5692245-mac.dmg

O sinal “+” significa que os arquivos do resultado devem ser maiores do que o número a seguir. Já o símbolo de menos (“-”) pode ser usado para indicar um valor menor que o seguinte. Por fim, não usar um sinal significaria corresponder exatamente ao tamanho desejado.

O número é seguido pela unidade de tamanho do arquivo. As unidades podem ser:

  • b – Bytes
  • k – Kilobytes
  • M – Megabytes
  • G – Gigabytes

Pesquisa de diretórios e arquivos vazios

Use o teste “-empty” para encontrar diretórios e arquivos vazios como este:

  • find . -empty

./.cloud-locale-test.skip

./datafiles

./b.txt

./.cache/motd.legal-displayed

Pesquisa por hora de modificação do arquivo

Também é possível averiguar todos os arquivos e diretórios com base na hora de criação ou modificação com o software de teste “-cmin”. Para encontrar todos os arquivos alterados nos últimos 60 minutos (menos de 60), use “-60” dessa forma:

  • find . -cmin -60

.

./exemplo.txt

./datafiles

Para arquivos modificados a qualquer momento antes dos últimos 60 minutos, use “+60”.

Pesquisa por tempo de acesso

Buscar arquivos pelo horário do último acesso pode ser feito com o teste “-atime”. Assim, o comando a seguir procura por arquivos não visualizados nos últimos 180 dias:

  • find . -atime +180

Eles podem ser movidos para um dispositivo de backup se o espaço em disco for insuficiente.

Pesquisa por nome de usuário

Com o teste de nome de usuário “-user”, são encontrados todos os arquivos e diretórios pertencentes a um usuário. Por exemplo, a instrução a seguir procura todos os arquivos e diretórios pertencentes ao usuário “ubuntu” no diretório” /home”:

  • find /home -user ubuntu 2>/dev/null

/home/ubuntu

/home/ubuntu/.bash_logout

/home/ubuntu/.bashrc

/home/ubuntu/.ssh

/home/ubuntu/.profile

Pesquisa por modo

Deseja achar arquivos definidos de um modo específico, ou seja, com um conjunto específico de permissões? Use o teste “-perm”. O exemplo a seguir procura arquivos com permissões definidas para 777:

  • find /home -perm 777

Operadores

Os três operadores lógicos “-and”, “-or” e “-null” também podem combinar vários testes em um único comando find no Linux. O exemplo a seguir procura por arquivos maiores que 100 MB pertencentes ao usuário Eu:

  • find /home  -user eu  -and  -size +100M  2>/dev/null

/home/eu/

O comando a seguir procura por arquivos com mais de 100 MB pertencentes ao usuário eu ou ao usuário eu2:

  • find /home \( -user eu2 -or -user eu \)  -and  -size +100M  2>/dev/null

/home/eu2/

/home/eu/

Uma barra invertida deve ser colocada antes dos parênteses para evitar que o shell tente interpretá-los.

Ações

O Linux Find fornece os resultados e, em seguida, a opção de executar uma ação sobre eles. Aqui estão algumas ações predefinidas:

  • Limpar: remove os arquivos que correspondem aos critérios de pesquisa;
  • Ls: mostra a saída ls detalhada com o tamanho do arquivo e o número; 
  • Impressão: exibe o caminho completo dos arquivos correspondentes. Esta é a ação padrão se nenhuma outra ação for especificada;
  • Executar: executa o seguinte comando, em cada linha do resultado da pesquisa.

Então, se quiser encontrar todos os arquivos vazios e excluí-los, aqui está como você pode fazer isso:

  • find . -empty -delete

Aviso: antes de usar a ação de exclusão, é sempre seguro executar o comando uma vez com a ação “-print” e confirmar os resultados.

A ação executar (“-exec”) é especial, porque permite executar qualquer instrução de sua escolha nos resultados da busca. É assim:

  • -exec command {} \;

Nesse exemplo, “command” é o comando a ser executado nos resultados da pesquisa, como “rm”, “mv” ou “cp”, enquanto “{}” representa os próprios resultados. A sintaxe termina com um ponto e vírgula escapado por uma barra invertida.

Portanto, o comando para localizar e excluir todos os arquivos vazios pode ser escrito assim:

  • find . -empty -exec rm {} \;

Outro exemplo de ação “-exec”, a seguir, copia todos os arquivos .png de imagem para o diretório “backup/images”:

  • find . -name “*.png” -exec cp {} /backups/images \;

Conclusão

Como explicamos, o comando find Linux pesquisa arquivos com base em nome, data do último acesso, data da última modificação, nome do usuário (proprietário), nome do grupo, tamanho, permissões, etc. Sobre os resultados, pode-se executar ações, como excluir, copiar ou mover para outro local.

Uma observação importante: o comando find está disponível na maioria das distribuições Linux padrão, então você não precisa instalar nenhum pacote. Ele é uma ferramenta essencial no aprendizado de quem deseja ser super produtivo na linha de comando do Linux.

Dessa forma, depois de dominado, o find comando Linux pode ser de grande ajuda e simplificar as tarefas de administração do sistema para você. A chave para isso é praticar e usá-lo com frequência!

Agora que você tem um bom entendimento de como usar o Linux find, que tal dominar mais comandos?

Continue acompanhando nossos conteúdos! Em nosso blog, falamos sobre Tecnologia, Marketing, Negócios e muito mais. Confira!