Olá pessoal.
Não tem como memorizar todos os comandos do Linux de uma vez só. Então o melhor a fazer é pesquisar e documentar, para que possamos consultar depois, quando não nos lembrarmos de algum comando, ou parâmetro.
Hoje aqui vou abordar o uso do comando find. Se você deseja ver o manual completo do find, basta digitar “man find” no terminal e ele mostrará o manual da ferramenta. Achei no site do tecmint, um bom resumo de 35 usos deste comando e vou repassar aqui. São exemplos práticos do uso do find.
Sobre o Find
O comando find é um dos comandos usados mais importantes no Linux. Ele é usado para pesquisar e listar arquivos e diretórios com base nas condições especificadas. O find pode ser usado com uma variedade de condições, como encontrar arquivos por permissões, usuários, grupos, tipo de arquivo, data, tamanho e outros critérios possíveis.
Ele pode também filtrar os resultados e então realizar uma ação sobre os arquivos encontrados, como por exemplo encontrar e excluir ou copiar ou fazer o que você desejar.
- Parte I: Encontrar arquivos pelos nomes
- Parte II: Encontrar arquivos com base em suas permissões
- Parte III: Encontrar arquivos com base em Usuários e Grupos
- Parte IV: Encontrar arquivos e diretórios com base na data e hora
- Parte V: Encontrar arquivos e diretórios com base no tamanho
Parte I – Encontrar Arquivos Pelos Nomes
Obs. Para você fazer esses exercícios na sua casa, precisará ter os mesmos arquivos de teste que usaremos aqui. Se preferir criá-los para reproduzir melhor o exercício, seria interessante. Eu faria isso com o comando touch para arquivos e mkdir para pastas.
touch receita.txt Receita.txt receita.php login.php index.php mkdir Receita
1. Encontre arquivos usando o nome na pasta atual
Localizar todos os arquivos cujo nome é receita.txt na pasta de trabalho atual.
find . -name receita.txt ./receita.txt
2. Encontrar arquivos no diretório home
Localizar todos os arquivos dentro da pasta /home com o nome receita.txt .
find /home -name receita.txt /home/receita.txt
3. Localizar arquivos usando o nome e Ignorando o “case” (maiúsculas ou minúsculas)
find /home -iname receita.txt ./receita.txt ./Receita.txt
4. Encontrar Diretórios Usando Nome
Localizar todos os diretórios cujo nome é receita em /.
find / -type d -name Receita /Receita
5. Localizar arquivos por formato. Ex: PHP
Encontrar todos os arquivos php cujo nome é receita.php no diretório de trabalho atual.
find . -type f -name receita.php ./receita.php
6. Localizar todos os arquivos PHP no diretório
Encontrar todos os arquivos php em um diretório.
find . -type f -name "*.php" ./receita.php ./login.php ./index.php
Parte II – Localizar Arquivos Com Base em suas Permissões
Obs. Para saber mais sobre permissões comuns, e permissões especiais, tais como as SGID, SUID e STICKY, consulte este outro artigo abaixo
7. Localizar arquivos com permissões 777.
find . -type f -perm 0777 -print
8. Encontre arquivos sem permissão 777.
find / -type f ! -perm 777
9. Localizar arquivos SGID com permissões 664.
find / -perm 2644
10. Localizar arquivos “Stick Bit” com permissões 551.
find / -perm 1551
11. Encontrar arquivos SUID.
find / -perm /u=s
12. Encontrar arquivos SGID.
Pesquisar os arquivos SGID .
find / -perm /g=s
13. Encontre Leia arquivos somente
Pesquisar os arquivos somente leitura.
find / -perm /u=r
14. Encontrar arquivos executáveis
Pesquisar os arquivos executáveis.
find / -perm /a=x
15. Encontrar arquivos com 777 permissões e chmod para 644
Encontrar todos os arquivos de permissão 777 e usar comando chmod para definir as permissões para 644.
find / -type f -perm 0777 -print -exec chmod 644 {} \;
16. Encontra Diretórios com Permissões 777 e fazer chmod para 755
Encontrar todos os diretórios com permissão 777 e usar chmod para definir as permissões para 755 .
find / -type d -perm 777 -print -exec chmod 755 {} \;
17. Encontrar e remover um único arquivo
Para encontrar um único arquivo chamado receita.txt e removê-lo.
find . -type f -name "receita.txt" -exec rm -f {} \;
18. Encontrar e remover vários arquivos por extensão
Para localizar e remover vários arquivos, como .mp3 ou .txt , em seguida, usar.
find . -type f -name "*.txt" -exec rm -f {} \; Ou find . -type f -name "*.mp3" -exec rm -f {} \;
19. Encontre todos os arquivos vazios
Para encontrar todos os arquivos vazios sob certo caminho.
find /tmp -type f -empty
20. Encontre todos os diretórios vazios
Para registrar todos os diretórios vazios sob certo caminho.
find /tmp -type d -empty
21. Arquivo todos os arquivos ocultos
Para encontrar todos os arquivos ocultos, use o comando abaixo.
find /tmp -type f -name ".*"
Parte III – Localizar arquivos com base em Proprietários e Grupos
22. Encontre único arquivo com base no usuário
Para encontrar todos os arquivos ou um único arquivo chamado receita.txt dentro da raiz “/”
find / -user root -name receita.txt
23. Localizar todos os arquivos com base no usuário
Para encontrar todos os arquivos que pertence ao usuário cleuber dentro da pasta /home.
find /home -user cleuber
24. Encontre todos os arquivos com base em Grupo
Para encontrar todos os arquivos que pertence ao grupo developer dentro da pasta /home.
find /home -group developer
25. Localizar arquivos particulares de um usuário
Para encontrar todos os arquivos .txt do usuário cleuber na pasta /home.
find /home -user tecmint -iname "*.txt"
Parte IV – Localizar arquivos e diretórios com base na data e hora
26. Encontre as últimas 50 Dias arquivos modificados
Para encontrar todos os arquivos que são modificados 50 dias atrás.
find / -mtime 50
27. Encontre arquivos acessados nos últimos 50 dias
Para encontrar todos os arquivos que foram acessados até 50 dias atrás.
find / -atime 50
28. Encontre os arquivos modificados entre 50 a 100 dias atrás
Para encontrar todos os arquivos que foram modificados mais de 50 dias para trás e menos de 100 dias.
find / -mtime +50 -mtime -100
29. Procurar arquivos alterados na última hora
Para encontrar todos os arquivos que foram alterados na última hora.
find / -cmin -60
30. Procurar arquivos modificados na última 1 hora
Para encontrar todos os arquivos que foram modificados na última hora.
find / -mmin -60
31. Procurar arquivos acessados na última 1 hora
Para encontrar todos os arquivos que foram acessados pela última vez na última hora.
find / -amin -60
Parte V – Localizar arquivos e diretórios com base no tamanho
32. Encontrar arquivos de 50MB
find / -size 50M
33. Encontre arquivos de tamanho entre 50MB a 100MB
Para encontrar todos os arquivos que são maiores do que 50 MB e menores de 100 MB.
find / -size +50M -size -100M
34. Localizar e apagar arquivos de 100MB
Para encontrar todos os arquivos de 100MB e excluí-los usando um único comando.
find / -size +100M -exec rm -rf {} \;
35. Procurar arquivos específicos e Excluir
Pesquisar os arquivos de extensão .mp3 com mais de 2MB e excluí-los usando um único comando.
find / -type f -name *.mp3 -size +2M -exec rm {} \;
Conclusão
Estes comandos find são extremamente úteis e com certeza em algum momento você precisará muito deles. Eu não usei outras ações do “-exec” aqui para os arquivos que foram encontrados, mas a sintaxe do exec para uma ação de cópia, após o comando find, por exemplo, seria:
-exec cp {} /pasta-destino \;
Exemplo – Encontrar arquivos mp3 e copiá-los para a pasta /tmp/musicas:
find . -type f -name "*.mp3" -exec cp {} /tmp/musicas \;
E a mesma regra se aplica para o comando de mover (mv).
Para saber mais dos comandos de Linux, um outro artigo talvez possa ser útil.
Comandos Básicos de Linux
Até a próxima!
Cleuber