40 melhores exemplos de comando Find no Linux

O comando find do Linux é uma ferramenta poderosa que permite aos administradores de sistema localizar e gerenciar arquivos e diretórios com base em uma ampla variedade de critérios de pesquisa. Ele pode encontrar diretórios e arquivos por nome, tipo ou extensão, tamanho, permissões, etc.

Além de localizar arquivos e diretórios, combinar o comando find com outros permite que você execute ações sobre os resultados. Adicionar a opção -exec permite que os administradores de sistema executem comandos externos e executem ações como copiar, mover, excluir ou alterar as permissões dos arquivos que correspondem aos critérios especificados, como tamanho, nome etc.

Neste artigo, começaremos explicando os comandos básicos de localização do Linux com exemplos. Isso mostrará como localizar arquivos e diretórios. Em seguida, mostraremos como usar a opção -exec para atuar nos arquivos ou diretórios com base em seu tamanho, permissões etc.

A sintaxe geral para o comando find é

find {path} {name -of-file or dir-to-search} {action-to-take}

Onde,

  • path especifica o diretório.
  • nome do arquivo ou diretório a ser pesquisado : Nome do arquivo ou diretório a ser procurado
  • ação a ser executada: como copiar, excluir, mover, etc.

Neste tutorial, explicaremos como localizar arquivos e diretórios correspondentes aos padrões especificados. Também veremos como realizar ações nos arquivos ou diretórios que o comando find localiza. O guia é baseado no Ubuntu, mas é aplicável à maioria das distribuições e versões do Linux.

últimas postagens

Encontrar arquivos e diretórios

Encontre arquivos específicos por nome ou extensão

Para procurar um arquivo específico, execute o seguinte comando na raiz (/). O comando contém o nome exato do arquivo que você está procurando.

find . -name file22.txt

Resultado

./test/file22.txt
./sales/file22.txt

Observe que os resultados incluem o caminho. Isso é importante se você não souber o diretório onde o arquivo está localizado ou quando ele estiver em mais de um local.

Você também pode procurar o arquivo em outro diretório enquanto ainda estiver no local atual. Nesse caso, você precisa fornecer o caminho para o diretório onde deseja pesquisar.

find ./test -name file22.txt

Procurando por arquivos específicos em outro diretório

No nosso caso, buscaremos todas aquelas que começam com o arquivo de letras no diretório test.

find ./test -name file*

Resultado

./test/file22.txt
./test/file30.doc
./test/file1.txt
./test/file5,doc

Pesquisar arquivos por extensão

Para encontrar um arquivo no Linux com uma determinada extensão, adicione-o ao comando.

find . -name *.txt

Resultado

./test/subtest/subfil.txt
./test/file22.txt
./test/file1.txt
./home1/files32.txt
./home2/file22.txt
./qa/tags.txt

Encontre arquivos e diretórios por nome

Use o comando abaixo para procurar arquivos e diretórios começando com as letras qa. Em nosso computador, temos os arquivos qatree.txt e qa.txt, além de um diretório chamado qa.

  Como usar plugins Pidgin no bate-papo do Empathy no Linux

Se executarmos o comando;

find ./ -name "qa*"

Ele retorna a seguinte saída

./test/qatree.pdf
./test/qa.txt
./home/qa

O comando retorna os arquivos e diretórios correspondentes aos critérios de pesquisa. Para localizar apenas arquivos ou diretórios, você precisa especificar isso no comando.

Encontre apenas arquivos ou diretórios

Somente para arquivos, use a opção type f.

Somente arquivos

find ./ -type f -name "qa*"

Resultado

./test/qatree.pdf
./test/qa.txt

Somente diretórios

Adicione a opção type d para localizar apenas diretórios.

find ./ -type d -name "qa*"

Resultado

./home/qa

Comando de localização que não diferencia maiúsculas de minúsculas

Todas as pesquisas com a opção -name diferenciam maiúsculas de minúsculas e não fornecerão resultados com letras maiúsculas. Para obter todos os casos, use a opção -iname.

find ./ -iname "qa*"

Resultado

./test/qatree.pdf
./test/qa.txt
./test/QAtest.txt
./home/qa

Pesquise um arquivo em vários diretórios

Para localizar os arquivos em diretórios diferentes, adicione seus caminhos no comando. No nosso caso, vamos verificar nos diretórios teste e numérico.

find ./test ./numeric -name file22.txt -type f

Resultado

./test/file22.txt
/root/numeric/file22.txt

Encontre vários arquivos com diferentes extensões de todos os diretórios

Você pode usar o comando find para localizar vários arquivos que compartilham as diferentes extensões, como *.doc, *.txt *.pdf, etc. Isso pode ser feito separadamente, uma extensão por vez, ou usando apenas um comando que inclui todos as extensões desejadas.

achar . -type f ( -name “*.txt” -o -name “*.pdf” -o -name “*.doc” )

resultado

./test/subtest/subfil.txt
./test/qatree.pdf
./test/file22.txt
./test/qa.txt
./test/file30.doc
./books/acro.pdf
./data1/FILE22.txt
./docs/files32.txt

Encontre arquivos contendo determinado texto

Às vezes, você deseja acessar um arquivo que contém determinado texto, mas não consegue lembrar o nome ou o local do arquivo. Este comando permite encontrar todos os arquivos que contêm o texto de destino.

Para procurar todos os arquivos que contenham a palavra hiperconvergência”, use;

find / -type f -exec grep -l -i "hyperconvergence" {} ;

Resultado

/root/numeric/hci
/root/HCIP

A opção –i permite que o comando ignore casos e encontre o texto em letras maiúsculas ou não, ou seja, hiperconvergência, hiperconvergência etc.

Para procurar os arquivos em um diretório específico, basta adicioná-los ao comando

find ./numeric -type f -exec grep -l -i "hyperconvergence" {} ;

Resultado

./numeric/hci

Explore mais exemplos de comandos grep.

Encontre arquivos e diretórios com base no tamanho

Você pode encontrar todos os arquivos ou diretórios menores, iguais ou maiores que um determinado tamanho, dentro de um determinado intervalo ou vazios. Use o formato de tamanho apropriado dependendo do tipo de arquivos ou diretórios que você está procurando.

As opções de tamanho incluem;

c – bytes

k – kilobytes

M – Megabytes

G – Gigabytes

Encontre arquivos de um determinado tamanho – igual a 30 MB

Para pesquisar, encontre todos os arquivos de 30 MB

find / -size 30M

Encontre arquivos maiores que um tamanho especificado

find -size +2M

Resultado

. /Downloads/ubuntu18043.iso 
./.cache/pip/http/6/e/3/8/3/6e38383f41850c3e5705d48116bc52f81b92a80500f414305057 7a9c

Encontre arquivos com menos de 10 MB no diretório atual

find . -type f -size -10M

Encontre arquivos com tamanhos entre 100-200 MB

Ao procurar arquivos dentro de um intervalo específico, como entre 100 e 200 MB

find / -size +100M -size -200M

Procure diretórios maiores que 20kb

localizar / -tipo d -tamanho +20k

Encontre arquivos e diretórios vazios.

arquivos

find ./ -type f -size 0

ou

find ./ -type f –empty

Diretórios

find ./ -type d –empty

Encontre arquivos por idade ou tempo de modificação

Encontrar arquivos com mais de n dias

find /path/ -type f -name '*.txt' -mtime +8

O -mtime +8 procurará arquivos txt com mais de 8 dias.

Por data de modificação

Isso procurará arquivos modificados nas últimas 17 horas

find . -mtime -17 -type f 

Procura diretórios modificados nos últimos 10 dias

find . -mtime -10 -type d 

Encontre arquivos com base no acesso ou modificação

Encontre arquivos com base na data ou hora acessada. Isso permite que você veja os arquivos que foram ou não acessados ​​em um período especificado.

  Como instalar o tema Qogir GTK no Linux

Para ver os arquivos que não foram acessados ​​nos últimos 10 dias no diretório inicial.

find /home -atime +10

Arquivos acessados ​​há exatamente 10 dias

find /home -atime 10

Acessado nos últimos 10 dias

find /home -atime -10

Encontre arquivos modificados nos últimos n dias

Você também pode procurar os arquivos no diretório /home modificados nos últimos 10 dias usando o comando;

find /home -mtime -10 

Encontre arquivos modificados dentro de um período específico.

Por exemplo, todos os arquivos modificados entre 6 e 15 dias atrás no diretório inicial.

find /home -type f -mtime +6 -mtime -15

Arquivos e diretórios acessados ​​nos últimos 10 minutos

Para encontrar os arquivos acessados ​​nos últimos 10 minutos, use a opção -amin.

find . -amin -10 -type f

Resultado

./.bash_history
./[email protected]:~#

Diretórios acessados ​​nos últimos 10 minutos

find . -amin -10 -type d

Encontre arquivos correspondentes a permissões específicas

Sintaxe

$ find -perm mode

Onde mode é a permissão que é numérica como 644, 655, 700, 777, etc, ou letras como u=x, a=r+x, etc.

Você pode especificar o modo das três maneiras a seguir.

  • Sem um prefixo quando você deseja encontrar arquivos com as permissões exatas especificadas.
  • Com “-“ para arquivos com pelo menos a permissão especificada. Isso retorna arquivos com as permissões mais altas especificadas e adicionais.
  • O uso de “/” requer a especificação do proprietário ou grupo com permissão para o arquivo.
  • Encontre arquivos com permissão 777

    find -perm 777

    Resultado

    ./file1

    Encontre arquivos com pelo menos 766
    encontrar -perm -766

    Resultado

    ./file2
    ./file1

    O comando procura todos os arquivos nos quais o

    • O proprietário do arquivo tem permissões de leitura/gravação/execução.
    • O grupo tem permissões de leitura/gravação
    • Outros têm permissão de leitura/gravação

    Assim, ele retorna dois arquivos que atendem a esse critério – arquivo1 e arquivo2. Os arquivos não precisam ter as permissões 766 exatas e podem ter permissões adicionais desde que tenham pelo menos as especificadas.

    Encontre arquivos graváveis ​​pelo proprietário

    Agora usaremos o “/” para procurar arquivos graváveis ​​por seu proprietário, grupo ou outros.

    find -perm /222
    .
    ./file2
    ./file3
    ./file1

    O acima procura por arquivos que são graváveis ​​por seu proprietário ou grupo.
    Isso retorna arquivos que são graváveis ​​por qualquer um, mas não necessariamente por ambos. Para ver os arquivos, onde ambos têm permissões graváveis, use o prefixo –.

    find -perm -220

    Resultado

    ./file2
    ./file1

    Encontrar arquivos pertencentes a um usuário

    Encontre todos os arquivos pertencentes a Jack

    find /home -user jack

    Resultado

    /home/jack
    /home/jack/examples.desktop
    /home/jack/.gnupg
    /home/jack/.gnupg/private-keys-v1.d
    /home/jack/ans.cgi

    Encontre arquivos específicos pertencentes a um usuário

    Encontre todos os arquivos de texto pertencentes a Jack

    find /home -user jack -iname "*.txt"

    Resultado

    /home/jack/docs/file32.txt

    Encontre e liste arquivos e diretórios junto com suas permissões

    find -name "*.conf" | ls -l

    Resultado

    total 120
    drwxr-xr-x 2 root root 4096 Dec 31 13:19 backup2
    drwxr-xr-x 2 root root 4096 Jan 4 11:57 Desktop
    drwxr-xr-x 2 root root 4096 Dec 31 11:50 Documents
    drwxr-xr-x 2 root root 4096 Dec 31 12:27 Downloads
    -rw-r--r-- 1 root root 0 Jan 4 12:02 file22.doc
    drwxr-xr-x 2 root root 4096 Jan 4 12:14 file23
    -rw-r--r-- 1 root root 0 Jan 4 12:23 file23.txt

    Encontre e aja de acordo com os resultados

    Nesta seção, veremos como você pode agir nos arquivos que correspondem ao padrão especificado no comando find.

    Localizar arquivos e alterar permissões

    Encontre e altere as permissões de certos tipos de arquivo. No nosso caso, trabalharemos com arquivos PHP com diferentes permissões conforme mostrado a seguir.

    [email protected]:~/ver$ ls -la
    
    total 8
    drwxrwxr-x 2 jack jack 4096 Jan 3 14:11 .
    drwxr-xr-x 8 jack jack 4096 Jan 3 14:05 ..
    -rwxr-xr-x 1 jack jack 0 Jan 3 14:06 ans.php
    -rw-rw-r-- 1 jack jack 0 Jan 3 14:11 base.php
    -rwxr-xr-x 1 jack jack 0 Jan 3 14:06 query.php
    -rw-rw-r-- 1 jack jack 0 Jan 3 14:11 qust.php
    -rwxr-xr-x 1 jack jack 0 Jan 3 14:06 text.php
    -rw-rw-r-- 1 jack jack 0 Jan 3 14:11 vary.php

    Vamos agora procurar todos os arquivos PHP (acima) e substituir suas permissões por 755

    find ver -name "*.php" -type f -exec chmod 755 {} ;

    O comando procura por arquivos PHP no diretório ver e, em seguida, define sua permissão para 755 (rwxr-xr-x)

    Resultados

    [email protected]4:~/ver$ ls -la
    total 8
    drwxrwxr-x 2 jack jack 4096 Jan 3 14:11 .
    drwxr-xr-x 8 jack jack 4096 Jan 3 14:05 ..
    -rwxr-xr-x 1 jack jack 0 Jan 3 14:06 ans.php
    -rwxr-xr-x 1 jack jack 0 Jan 3 14:11 base.php
    -rwxr-xr-x 1 jack jack 0 Jan 3 14:06 query.php
    -rwxr-xr-x 1 jack jack 0 Jan 3 14:11 qust.php
    -rwxr-xr-x 1 jack jack 0 Jan 3 14:06 text.php
    -rwxr-xr-x 1 jack jack 0 Jan 3 14:11 vary.php

    Localizar e alterar permissões de arquivos e diretórios

    Encontre arquivos com 644 permissões e altere-os para 655 permissões

    find . -type f -perm 644 -exec chmod 655 {} ;

    Você também pode procurar diretórios com 644 permissões e substituir por 755.

    find . -type d -perm 644

    Resultado

    ./docs   

    A pasta docs tem 644 permissões

    drwxrwxr-x 2 jack jack 4096 Jan 3 12:45 docs

    Para configurá-lo para 755, executamos

    find . -type d -perm 644 -exec chmod 755 {} ;

    Agora podemos verificar novamente para ver o que exatamente 755

    find . -type d -perm 755

    Resultado
    .
    ./docs

      Como habilitar a criptografia PGP para Thunderbird no Linux com Enigmail

    Acima, podemos ver que os diretórios root e docs têm as 755 permissões.

    O comando Ls –la fornece os seguintes detalhes

    drwxr-xr-x 2 jack jack 4096 Jan 3 12:45 docs

    Encontre e copie arquivos ou diretórios

    Encontre e copie um arquivo específico para um diretório

    O comando abaixo encontrará o arquivo file22.txt e o copiará para o diretório ~/tmp/images.

    find -iname file22.txt -exec cp {} ~/tmp/images ;

    Encontre e copie um tipo de arquivo para um diretório

    Para encontrar arquivos como imagens com extensão jpg no diretório atual e copiá-los para um local diferente, como uma pasta de imagens, use;

    find -iname '*.jpg' -exec cp {} ~/tmp/images ;

    Isso localizará e copiará todos os arquivos jpg para a pasta ~/tmp/images.

    Encontre e copie um arquivo para vários diretórios

    Encontre e copie um único para vários diretórios.

    find ~/tmp/dir1/ ~/tmp/dir2/ $HOME/3/ -maxdepth 0 -exec cp ~/numeric/hci {} ;

    Isso encontrará o arquivo hci file e o copiará para os três diretórios de /tmp/dir1/ /tmp/dir2/ e $HOME/3/

    Encontre e mova arquivos para um diretório diferente

    Para mover um arquivo conhecido de um diretório para outro. Para mover o arquivo universal.php;

    find ~/folder/ -type f -name universal.php -exec mv {} ~/numeric/ ;

    Pesquise e mova arquivos com uma determinada extensão para uma pasta diferente

    find ~/numeric/ -type f -name '*.php' -exec mv {} ~/folder/ ;

    Encontre determinados arquivos e mova para uma pasta diferente específica

    find -type f -name uni*.* -exec mv {} ~/unifiles/ ;

    O comando procura todos os arquivos com nomes começando com uni e tendo qualquer extensão. Em seguida, ele os move para o diretório /unifiles/

    Encontre e mova arquivos com base na idade

    Localize e mova arquivos anteriores aos dias especificados para um local diferente, como o arquivo.

    find /path/ -type f -name '*.pdf' -mtime +20 -exec mv {} /backup1/ ;

    Isso procurará arquivos PDF com mais de 20 dias e os moverá para o diretório backup1.

    Encontre e exclua arquivos e diretórios

    A sintaxe para localizar e remover arquivos ou diretórios no diretório atual é

    achar . -type f -name “arquivo a ser excluído” -exec rm -f {} ; para excluir apenas arquivos ou

    achar . -type d -name “dir-to-delete” -exec rm -rf {} ; para excluir apenas diretórios

    Encontre e exclua apenas arquivos específicos

    Para localizar e excluir arquivos começando com til, use;

    find . -type f -name "til*" -exec rm {} ; 

    Para localizar e excluir diretórios começando com til

    find . -type d -name "til*" -exec rm {} ;

    Remova arquivos e diretórios

    find . -name "til*" -exec rm -rf {} ; 

    Isso removerá os arquivos e diretórios que começam com as letras til.

    Excluir por extensão

    Abaixo está como você pode localizar e excluir todos os arquivos txt no diretório atual. Substitua o txt por outra extensão como bak, pdf ou qualquer outra que você queira remover.

    find . -type f -name "*.txt" -exec rm -f {} ;

    Caso você queira que o sistema solicite a confirmação antes de excluir cada arquivo, adicione a opção -i conforme abaixo.

    find . -type f -name "*.txt" -exec rm -i {} ;

    Resultado

    rm: remove regular empty file './File22.txt'? y
    rm: remove regular empty file './file22.txt'? y
    rm: remove regular empty file './file23.txt'?

    Por padrão, o -rm não removerá os diretórios e você precisará usar a opção –r para garantir uma remoção recursiva. Isso garante a exclusão de diretórios vazios e aqueles que contêm arquivos. A opção -f força a remoção e é usada para arquivos e diretórios.

    Encontre e exclua arquivos com mais de n dias

    Encontre e exclua arquivos de backup com mais de 20 dias do diretório atual.

    find . -type f -name '*.bak' -mtime +20 -exec rm {} ;

    Isso excluirá todos os arquivos .bak com mais de 20 dias.

    Localizar e excluir apenas diretórios

    Para excluir um diretório chamado dir22

    find . -type d -name dir22 -exec rm -rf {} ;

    Assegure-se de que você corresponda às maiúsculas e minúsculas do nome do diretório ou use a opção -iname.

    find . -type d -iname Dir22 -exec rm -rf {} ;

    Remove Dir22 e Dir22

    Para confirmar antes da exclusão, use a opção -i.

    find . -type d -iname Dir22 -exec rm -rf -i {} ;

    Resultado
    rm: remover diretório ‘./Dir22’? n
    rm: remover diretório ‘./dir22’? y

    No nosso caso, digitamos n para o diretório Dir22, que não será excluído, e y para o diretório 22, que agora será removido.

    Encontre e remova arquivos vazios

    Você pode usar qualquer um dos seguintes comandos para localizar arquivos vazios e excluí-los automaticamente.

    find ./ -type f -size 0 -exec rm -f {} ;

    ou
    find ./ -type f -size 0 | xargs rm -f
    ou
    find ./ -type f -size 0 –delete

    Encontre e remova diretórios vazios

    Para remover diretórios vazios, usaremos a opção d.

    find ./ -type d -empty -exec rmdir {} ;

    Outra alternativa é usar delete em vez de remover.

    find ./ -type d -empty -delete

    Observe que excluir sistema ou arquivos críticos do seu computador pode danificar o sistema operacional ou aplicativos ou levar à perda de seus dados importantes.

    Para evitar exclusões acidentais, é recomendável usar uma conta de usuário não root. Além disso, certifique-se de excluir os arquivos corretos que não são úteis e de ter um backup de todos os seus arquivos de dados para garantir.

    Qual é o próximo?

    Vá em frente e experimente os comandos de localização do Linux acima em seu laboratório ou ambiente NÃO DE PRODUÇÃO. Veja se você pode usar algum para automatizar a limpeza do sistema de arquivos com o Crontab. E, para dominar o Linux, confira este curso online.