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.