Como usar o comando Find para pesquisar arquivos no Linux

Há momentos em que você deseja acessar um arquivo específico, mas não consegue encontrá-lo em seu sistema devido à falta de organização da pasta. Felizmente, o Linux oferece alguns utilitários úteis que permitem a você pesquisar facilmente por arquivos em seu computador.

O comando find é uma ferramenta que pode ser usada para pesquisar um arquivo usando seu nome, permissões, extensão, tamanho, etc. Este guia explicará o comando Find do Linux e fornecerá alguns exemplos que demonstram o quão poderoso é esse utilitário.

O que é o comando Find?

Como o nome sugere, o comando find permite que um usuário pesquise por arquivos presentes em seu armazenamento local. Ao contrário dos recursos de pesquisa normais presentes nos gerenciadores de arquivos do Linux, o comando find tem funções adicionais que podem filtrar os arquivos de acordo com certas condições.

Além disso, o comando find fornece vários critérios para localizar arquivos em um computador. Você pode até usar expressões regulares para combinar o nome de um arquivo com um padrão específico.

Como encontrar arquivos no Linux

O comando find possui várias opções e funções que filtram os arquivos com base nas condições especificadas.

Encontre a sintaxe do comando

A sintaxe básica do comando find é:

 find [path] [options] [expression]

Por exemplo, o comando a seguir pesquisará arquivos de texto no diretório / home .

 find /home -type f -name "*.txt"

Lembre-se de que, antes de pesquisar arquivos em seu armazenamento, você precisa ter permissões de leitura para esse diretório específico.

Pesquisar arquivos por nome

O uso mais comum do comando find é pesquisar um arquivo por seu nome. Para localizar um arquivo usando o nome do arquivo, use o sinalizador -name com o comando padrão.

 find /home -type f -name filename.txt

O comando mencionado irá procurar um arquivo chamado filename.txt no diretório / home . A opção -type f informa ao sistema que estamos procurando um arquivo .

Se você deseja ignorar as maiúsculas e minúsculas no nome do arquivo, substitua a opção -name por -iname .

 find /home -type f -iname FileName

Este comando irá localizar um arquivo que possui um dos seguintes nomes: Filename, filename, FileName, FiLename, etc.

Como qualquer outro comando do Linux, você pode usar . (ponto) para especificar o caminho relativo do diretório atual também.

 find . -type f -name filename.txt

Da mesma forma, / for / root e ~ for / home também podem ser usados.

Encontrar arquivos por extensão

Pesquisar arquivos com uma extensão específica pode ajudar a restringir os resultados da pesquisa. Para localizar um arquivo por sua extensão, use a seguinte expressão regular com o sinalizador -name e -iname .

 find /home -type f -name "*.pdf"

Este comando exibirá uma lista de todos os arquivos que possuem a extensão .pdf . Observe que você terá que escapar o caractere asterisco ( * ) com aspas ( "" ) ou uma barra invertida ( ) para que o terminal o interprete como um caractere curinga.

Você também pode inverter o comando acima usando o sinalizador -not . O comando a seguir irá procurar arquivos que não tenham a extensão .pdf .

 find /home -type f -not -name "*.pdf"

Você pode até canalizar o comando find com outros comandos do Linux. Por exemplo, para alterar as permissões de moderação para cada arquivo que se encaixa na condição:

 find /home - type f "*.pdf" -exec chmod -777 {} ;

Este comando pesquisará todos os arquivos PDF no diretório / home e alterará suas permissões para que qualquer pessoa possa ler, gravar e executar esses arquivos.

Pesquisar por tipos de arquivo específicos

Além dos arquivos, o comando find também pode pesquisar outros tipos de arquivos. Diretórios, links simbólicos, soquetes e dispositivos de caracteres são alguns dos tipos de arquivo suportados pelo find.

Até agora, usamos a opção -type f no comando find. O f significa Arquivo . Para pesquisar outros tipos de arquivo no Linux, substitua f por outros caracteres reservados.

  • f : arquivos regulares
  • d : diretórios
  • l : links simbólicos
  • c : dispositivos de personagem
  • b : dispositivos de bloqueio
  • p : pipe nomeado
  • s : soquetes

Para pesquisar subdiretórios presentes no diretório / home :

 find /home -type d

Encontrar arquivos por tamanho

O sinalizador -size permite que você procure por arquivos que ocupam uma determinada quantidade de espaço no disco. Os seguintes sufixos denotam os vários tamanhos de arquivo:

  • b : blocos de 512 bytes
  • c : bytes
  • w : palavras de dois bytes
  • k : Kilobytes
  • M : Megabytes
  • G : Gigabytes

Para localizar todos os arquivos com tamanho de 1 GB:

 find /home -type f -size 1G

Para pesquisar arquivos com menos de 1 GB, adicione o caractere menos ( ) antes de especificar o tamanho:

 find /home -type f -size -1G

Da mesma forma, use o operador mais ( + ) para localizar arquivos com mais de 1 GB:

 find /home -type f -size +1G

Para pesquisar arquivos dentro de um intervalo de tamanho:

 find /home -type f -size +1M -size -10M

Encontrar arquivos usando carimbos de data / hora

Você já deve saber que o Linux atribui carimbos de data / hora específicos a cada arquivo em seu armazenamento. Esses carimbos de data / hora contêm a hora da modificação, hora da mudança e hora do acesso.

Para encontrar arquivos com um tempo de modificação específico:

 find /home -type f -name "*.txt" -mtime 5

O comando citado imprimirá todos os arquivos que foram modificados nos últimos cinco dias. Da mesma forma, você também pode usar -atime e -ctime para filtrar os arquivos de acordo com a hora de acesso e a hora de alteração.

Você também pode usar os sinais de mais e menos para localizar arquivos maiores ou menores que um carimbo de data / hora específico.

 find /home -type f -name "*.txt" -mtime +5

Pesquisar arquivos com permissões específicas

A opção -perm permite que os usuários procurem arquivos com um determinado conjunto de permissões.

 find /home -type f -perm 777

Use o caractere de barra ( / ) para listar o arquivo se pelo menos uma categoria tiver o conjunto correto de permissões fornecidas.

 find /home -type f -perm /777

Encontrar arquivos pelo proprietário

Use o sinalizador -user para obter arquivos que pertencem a um usuário específico.

 find /home -user randomuser

Encontrar e excluir arquivos

Para excluir todos os arquivos filtrados usando find, adicione o sinalizador -delete no final do comando.

 find /home -type f -name "*.pdf" -delete

O comando mencionado excluirá todos os arquivos PDF que estão presentes no diretório / home .

Você não poderá excluir diretórios não vazios com find. Você terá que usar o comando rm para excluir essas pastas em seu sistema Linux.

Organizando arquivos no Linux

Encontrar arquivos é difícil se você tiver centenas de diretórios em seu sistema sem nomes apropriados. O comando find é útil quando você deseja filtrar arquivos em um diretório de acordo com um critério específico.

Para obter o máximo do armazenamento em um sistema Linux, a organização e o gerenciamento de arquivos são essenciais. O agrupamento adequado de pastas e a remoção de dados redundantes podem ajudá-lo a acessar rapidamente os arquivos que deseja.