O Linux find
comando é uma ferramenta poderosa que permite que os administradores de sistema para localizar e gerenciar arquivos e diretórios com base em uma ampla gama de critérios de pesquisa. Ele pode encontrar diretórios e arquivos pelo seu nome, seu tipo, ou extensão, tamanho, permissões, etc.
além de localizar arquivos e diretórios, combinando o comando find
com outros permite que você tome medidas sobre os resultados., A adição da opção permite que os administradores do Sys executem comandos externos e executem acções como copiar, mover, apagar ou alterar as permissões dos ficheiros correspondentes aos critérios especificados, tais como tamanho, nome, etc.
neste artigo, começaremos por explicar os comandos básicos do Linux find com exemplos. Isto irá mostrar-lhe como encontrar arquivos e diretórios. Vamos então mostrar-lhe como usar a opção para agir nos arquivos ou diretórios com base no seu tamanho, permissões, etc.,
A sintaxe geral para o comando localizar
find {path} {name -of-file or dir-to-search} {action-to-take}
Onde
neste tutorial, iremos explicar como localizar arquivos e diretórios correspondentes 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 Linux.
encontre ficheiros e directórios
encontre ficheiros específicos pelo nome ou extensão
para procurar um ficheiro específico, execute o seguinte comando a partir do root (/)., O comando contém o nome exacto do ficheiro que procura.
find . -name file22.txt
Saída
./test/file22.txt./sales/file22.txt
por Favor, note que os resultados incluem a caminho. Isto é importante se você não sabe o diretório onde o arquivo está localizado, ou quando ele está em mais de um lugar.
pode também procurar o ficheiro noutra pasta, ainda na localização actual. Neste caso, você precisa fornecer o caminho para o diretório onde você deseja pesquisar.,
find ./test -name file22.txt
à procura de ficheiros específicos noutro directório
no nosso caso, iremos procurar todos aqueles que começam com o ficheiro de letras no directório de teste.
find ./test -name file*
Output
./test/file22.txt./test/file30.doc./test/file1.txt./test/file5,doc
Search for files by extension
To find a file in Linux with a certain extension, add it to the command.,
find . -name *.txt
Saída
./test/subtest/subfil.txt./test/file22.txt./test/file1.txt./home1/files32.txt./home2/file22.txt./qa/tags.txt
Localizar arquivos e pastas por nome
Use o comando abaixo para olhar para os arquivos e diretórios que começam com as letras qa
. Em nosso computador, temos o qatree.txt
e qa.txt
bem como arquivos de um diretório com o nome qa
.,
Se executar 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 pastas que correspondem aos critérios de pesquisa. Para encontrar Apenas arquivos ou diretórios, você precisa especificar isso no comando.
Procurar ficheiros ou pastas apenas
apenas para ficheiros, utilizar otype f
switch.
apenas Ficheiros
find ./ -type f -name "qa*"
Saída
./test/qatree.pdf./test/qa.txt
somente pastas
Adicionar type d
opção para localizar diretórios só.,
find ./ -type d -name "qa*"
Saída
./home/qa
não diferencia Maiúsculas de minúsculas comando localizar
Todas as pesquisas com -name
chave são sensíveis a maiúsculas e minúsculas e não vai dar resultados com letras maiúsculas. Para obter todos os casos, use a opção -iname
.
find ./ -iname "qa*"
Saída
./test/qatree.pdf./test/qa.txt./test/QAtest.txt./home/qa
procura por um ficheiro de várias pastas
para encontrar os ficheiros em diferentes pastas, adicione as suas localizações no comando., No nosso caso, vamos verificar nos diretórios test
e .
find ./test ./numeric -name file22.txt -type f
Saída
./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 localizar para localizar vários arquivos que compartilham as diferentes extensões, tais como *.doc
*.txt
*.pdf
, etc. Isto pode ser feito separadamente, uma extensão de cada vez, ou usando apenas um comando que inclui todas as extensões desejadas.,
find . -type f ( -name "*.txt" -o -name "*.pdf" -o -name "*.doc" )
saída
encontrar ficheiros contendo determinado texto
às vezes, você quer aceder a um ficheiro que contém determinado texto mas não pode recordar o seu nome de ficheiro ou localização. Este comando permite-lhe encontrar todos os ficheiros que contêm o seu texto de destino.
Para procurar todos os arquivos que contenham a palavra hyperconvergence”, o uso;
find / -type f -exec grep -l -i "hyperconvergence" {} ;
Saída
/root/numeric/hci/root/HCIP
A opção –i permite o comando a ignorar os casos e vai encontrar o texto seja capitalizado ou não i.e. hyperconvergence, Hyperconvergence , etc.,
Para procurar arquivos em um diretório específico, basta adicionar o comando
find ./numeric -type f -exec grep -l -i "hyperconvergence" {} ;
Saída
./numeric/hci
Localizar Arquivos e Diretórios com Base no Tamanho
Você pode encontrar todos os arquivos ou diretórios que são menores, iguais ou maiores que um determinado tamanho, dentro de um determinado intervalo ou vazio. Use o formato de tamanho apropriado, dependendo do tipo de arquivos ou diretórios que você está procurando.,nd arquivos de um determinado tamanho igual a 30MB
Para Pesquisar e encontrar todos os 30MB de arquivos
find / -size 30M
Encontre arquivos maiores do que um tamanho especificado
find -size +2M
Saída
. /Downloads/ubuntu18043.iso ./.cache/pip/http/6/e/3/8/3/6e38383f41850c3e5705d48116bc52f81b92a80500f414305057 7a9c
Encontre arquivos de menos de 10 mb no diretório atual
find . -type f -size -10M
Encontre arquivos com tamanhos entre 100-200 MB
Ao procurar por arquivos dentro de um intervalo específico, como entre 100 e 200 MB
find / -size +100M -size -200M
Procure por diretórios maior do que 20kb
find / -type d -size +20k
Encontrar vazio de arquivos e diretórios.,
Arquivos
find ./ -type f -size 0
ou
find ./ -type f –empty
Diretórios
find ./ -type d –empty
Localizar arquivos por idade ou tempo de modificação
Localizar os arquivos mais antigos que n dias
find /path/ -type f -name '*.txt' -mtime +8
-mtime +8
irá olhar para txt
arquivos que estão mais de 8 dias.,
Por data de modificação
Este irá procurar por arquivos modificados nos últimos 17 horas
find . -mtime -17 -type f
Olha para diretórios modificados nos últimos 10 dias
find . -mtime -10 -type d
Encontre arquivos com base no acesso ou modificação
Localizar ficheiros com base na data ou hora acessado. Isso permite que você veja arquivos que têm ou não foram acessados dentro de um período especificado.
para ver os arquivos que não foram acessados nos últimos 10 dias no diretório home.,
find /home -atime +10
Arquivos acessados exatamente 10 dias atrás
find /home -atime 10
Acessado nos últimos 10 dias
find /home -atime -10
Localizar os arquivos modificados nos últimos n dias
Você também pode olhar para os arquivos /home
diretório modificado nos últimos 10 dias, usando o comando;
find /home -mtime -10
Encontre a modificação de arquivos dentro de um período específico.
por exemplo, todos os ficheiros modificados entre 6 e 15 dias atrás na pasta pessoal.,
Files and directories accessed within the last 10 minutes
To find the files accessed within the last 10 minutes, use the-amin option.
find . -amin -10 -type f
Saída
./.bash_history./.profileroot@ubuntu1804:~#
pastas acessados nos últimos 10 minutos
find . -amin -10 -type d
Localizar arquivos de correspondência específica permissões
a Sintaxe
$ find -perm mode
Onde é o modo de permissão que é numéricos, tais como o 644, 655, 700, 777
, etc, ou letras, como u=x, a=r+x,
etc.,
pode indicar o modo de três formas diferentes.
- Sem prefixo quando quiser encontrar ficheiros com as permissões exactas indicadas.
- With ”
-
” for files with at least the specified permission. Isto devolve os ficheiros com as permissões indicadas, bem como as mais elevadas adicionais. - usando”
/
” requer a especificação do proprietário ou grupo com a permissão para o arquivo.,
Encontre arquivos com permissão 777
find -perm 777
Saída
./file1
Localizar arquivos com, pelo menos, 766
encontrar -perm -766
Saída
./file2./file1
O comando procura por todos os arquivos em que o
- O dono do arquivo tem ler/escrever/executar permissões.
- O Grupo tem permissões de leitura/escrita
- outros têm permissões de leitura/escrita
como tal, devolve dois ficheiros que satisfazem este critério – o ficheiro 1 e o ficheiro 2., Os arquivos não precisam ter a exata 766
permissões e podem ter outras tanto tempo, mas devem ter pelo menos as especificadas.
procure ficheiros writíveis pelo dono
usaremos agora o “/
” para procurar ficheiros writíveis pelo seu dono, ou grupo, ou outros.
find -perm /222../file2./file3./file1
o acima procura por ficheiros que possam ser gravados pelo seu dono ou grupo.
Isto devolve arquivos que podem ser gravados por qualquer um, mas não necessariamente por ambos. Para ver os ficheiros, onde ambos têm permissões de escrita, use o prefixo–.,
./file2./file1
Encontre arquivos de propriedade de um usuário
Localizar todos os arquivos de propriedade de Jack
find /home -user jack
Saída
/home/jack/home/jack/examples.desktop/home/jack/.gnupg/home/jack/.gnupg/private-keys-v1.d/home/jack/ans.cgi
Encontrar arquivos específicos, de propriedade de um usuário
Localizar todos os arquivos de texto de propriedade de Jack
find /home -user jack -iname "*.txt"
Saída
/home/jack/docs/file32.txt
Encontre e lista de arquivos e diretórios, juntamente com as respectivas permissões
find -name "*.conf" | ls -l
Saída
Encontrar e agir sobre os resultados
nesta seção, vamos ver como você pode agir sobre os arquivos que correspondam ao padrão especificado no comando localizar.,
Encontre os ficheiros e altere as permissões
encontre e altere as permissões de certos tipos de ficheiros. No nosso caso, vamos trabalhar com arquivos PHP com permissões diferentes como mostrado abaixo.,
agora, Vamos olhar para todos os arquivos PHP (acima) e substituir suas permissões 755
find ver -name "*.php" -type f -exec chmod 755 {} ;
O comando procura por arquivos PHP ver
diretório e, em seguida, define a sua permissão para 755
(rwxr-xr-x
)
Resultados
Localizar e alterar as permissões de arquivo e diretório
Localizar arquivos com permissões 644 e alterá-las para ter 655 permissões
find . -type f -perm 644 -exec chmod 655 {} ;
Você também pode olhar para diretórios com permissões 644 e substituir esta com 755.,
find . -type d -perm 644
Saída
./docs
pasta docs tem permissões 644
drwxrwxr-x 2 jack jack 4096 Jan 3 12:45 docs
é 755
nós run
find . -type d -perm 644 -exec chmod 755 {} ;
Agora podemos verificar novamente para ver o que exatamente 755
find . -type d -perm 755
Saída
.
./docs
de cima podemos ver que os diretórios root e docs têm as 755 permissões.,
Ls –la
comando fornece os seguintes detalhes
drwxr-xr-x 2 jack jack 4096 Jan 3 12:45 docs
Localizar e copiar arquivos ou diretórios
Localizar e copiar um arquivo específico para um diretório
O comando abaixo vai encontrar o file22.tx
t do arquivo e copiá-lo para o ~/tmp/images
diretório.,
find -iname file22.txt -exec cp {} ~/tmp/images ;
Localizar e copiar um tipo de arquivos para um diretório
Para encontrar arquivos, tais como imagens com jpg
extensão no diretório atual e copiá-los para um local diferente, como uma pasta de imagens, o uso;
find -iname '*.jpg' -exec cp {} ~/tmp/images ;
Isso vai encontrar e copiar todos os arquivos jpg para o ~/tmp/images
pasta.
encontre e copie um ficheiro para muitas pastas
encontre e copie uma para várias pastas.,
find ~/tmp/dir1/ ~/tmp/dir2/ $HOME/3/ -maxdepth 0 -exec cp ~/numeric/hci {} ;
Isso vai encontrar o arquivo hci arquivo e copiá-lo para os três diretórios de /tmp/dir1/ /tmp/dir2/
e $HOME/3/
Localizar e mover os arquivos para um diretório diferente
Para mover um arquivo de um diretório para outro., Para mover o universal.php
arquivo;
find ~/folder/ -type f -name universal.php -exec mv {} ~/numeric/ ;
Procurar e mover os arquivos com uma determinada extensão para uma pasta diferente
find ~/numeric/ -type f -name '*.php' -exec mv {} ~/folder/ ;
Encontre determinados arquivos e mover para uma determinada pasta diferente
find -type f -name uni*.* -exec mv {} ~/unifiles/ ;
O comando procura por todos os arquivos com nomes que começam com uni
e com qualquer extensão. Ele então os move para o diretório /unifiles/
encontrar e mover arquivos com base na idade
encontrar e mover arquivos mais antigos do que os dias especificados para um local diferente, como o arquivo.,
find /path/ -type f -name '*.pdf' -mtime +20 -exec mv {} /backup1/ ;
Isto irá procurar por arquivos pdf com mais de 20 dias e movê-los para o diretório backup1.,arquivos e diretórios
A sintaxe para encontrar e remover arquivos ou pastas no diretório atual é
find . -type f -name "file to delete" -exec rm -f {} ;
para apagar somente os arquivos ou
find . -type d -name "dir-to-delete" -exec rm -rf {} ;
para apagar diretórios somente
Encontre e elimine arquivos específicos, somente
Para encontrar e apagar arquivos começando com til, uso;
find . -type f -name "til*" -exec rm {} ;
Para localizar e excluir diretórios começando com til
find . -type d -name "til*" -exec rm {} ;
Remover arquivos e diretórios
find . -name "til*" -exec rm -rf {} ;
Isto irá remover arquivos e diretórios que começam com as letras til.,
Delete por extensão
abaixo é como você pode localizar e excluir todos os arquivos txt
na diretoria atual. Substitua o txt
por outra extensão como bak
, pdf
ou qualquer outra que queira remover.
find . -type f -name "*.txt" -exec rm -f {} ;
No caso de querer que o sistema O peça para confirmar antes de apagar cada ficheiro, adicione a opção-i como se segue.,
find . -type f -name "*.txt" -exec rm -i {} ;
Saída
Por padrão, o -rm
não irá remover os diretórios e você precisa usar o –r
opção garante uma recursiva de remoção. 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 tanto para os arquivos quanto para diretórios.
encontrar e apagar ficheiros com mais de n dias
encontrar e apagar ficheiros de salvaguarda com mais de 20 dias da pasta actual.,
find . -type f -name '*.bak' -mtime +20 -exec rm {} ;
isto irá apagar todos os .bak
ficheiros com mais de 20 dias.
Encontre e elimine diretórios somente
Para excluir um diretório chamado dir22
find . -type d -name dir22 -exec rm -rf {} ;
Certifique-se de que você coincidir com o nome do diretório de caso ou usar o -iname
opção.
find . -type d -iname Dir22 -exec rm -rf {} ;
Remove Dir22
e dir22
Para confirmar antes de exclusão, use a opção-i.
find . -type d -iname Dir22 -exec rm -rf -i {} ;
Output
rm: remove directory ‘.- Dir22?, N
rm: remove directory’./dir22′? y
No nosso caso, digitamos n
para o diretório Dir22
que não será eliminada e y
para dir22
que agora serão removidos.
encontre e remova ficheiros vazios
pode usar qualquer um dos seguintes comandos para localizar ficheiros vazios e apagá-los automaticamente.
find ./ -type f -size 0 -exec rm -f {} ;
ou
find .| – type f-size 0 / xargs rm-f
or
find .,/ – type f –size 0-delete
Find and remove empty directories
To remove empty directories we will use the d
.
find ./ -type d -empty -exec rmdir {} ;
outra alternativa é usar delete em vez de remover.
find ./ -type d -empty -delete
por favor, note que a exclusão de sistemas ou arquivos críticos do seu computador pode danificar o sistema operacional ou aplicações ou levar à perda de seus dados importantes.
para evitar deleções acidentais, é a melhor prática usar uma conta de usuário não-root., Além disso, certifique-se de que você está apagando os arquivos certos que não são úteis e que você tem um backup de todos os seus arquivos de dados apenas no caso.o que se segue?
vá em frente e tente os comandos acima do Linux find em seu laboratório ou ambiente de não 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.