-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256
Jaboatão dos Guararapes, PE, Brasil, 25 de maio de 2015.
Assunto: tradução livre de artigo acerca do comando "find"
Abaixo está uma livre tradução da postagem de autoria de Ravi Saive
acerca do comando "find" do GNU/Linux.
- --------------- Início da Tradução ---------------
35 Exemplos Práticos do Comando Find do Linux
por Ravi Saive - Atualização mais recente: 03 de janeiro de 2015.
Disponível em:
<http://www.tecmint.com/35-practical-examples-of-linux-find-command/>.
Acesso em: 24 maio 2015. 20:04:20 UTC.
O comando "find" do GNU/Linux é um dos mais importantes e mais
utilizados comandos em sistemas GNU/Linux. O comando "find" é
utilizado para procurar e localizar lista de arquivos e diretórios
baseados em condições que você especifica para arquivos que conferem
com os argumentos. O comando "find" pode ser utilizado em uma
variedade de condições como encontrar arquivos por permissões,
usuários, grupos, tipo do arquivo, data, tamanho e outros critérios
possíveis.
Ao longo deste artigo se estará compartilhando experiências de
dia-a-dia com o comando "find" do GNU/Linux e a utilização dele na
forma de exemplos. Neste artigo se mostrará os 35 exemplos de
comandos "find" mais utilizados no GNU/Linux. O artigo foi divido em
cinco partes, iniciando do básico até a utilização avançada do
comando "find".
1. Parte I: Comandos "find" básicos para encontrar arquivos por nomes
2. Parte II: Encontre arquivos baseados nas permissões deles
3. Parte III: Procure por arquivos baseado em proprietários e grupos
4. Parte IV: Encontre arquivos e diretórios baseados em data e horário
5. Parte V: Encontre arquivos e diretórios baseados em tamanho
Parte I: Comandos "find" básicos para encontrar arquivos por nomes
1. Encontre arquivos utilizando nome no diretório atual
Encontre todos os arquivos cujos nomes são "tecmint.txt" no diretório
de trabalho atual.
# find . -name tecmint.txt
./tecmint.txt
- ------------------------------
- ------------------------------
2. Encontre arquivos sob o diretório "home"
Encontre todos os arquivos sob o diretório /home com nome
"tecmint.txt".
# find /home -name tecmint.txt
/home/tecmint.txt
- ------------------------------
- ------------------------------
3. Encontre arquivos utilizando nome e ignorando a diferença entre
letras maiúsculas e minúsculas
Encontre todos os arquivos cujos nomes sejam "tecmint.txt" e que
contenham tanto letras maiúsculas quanto letras minúsculas no
diretório /home.
# find /home -iname tecmint.txt
./tecmint.txt ./Tecmint.txt
- ------------------------------
- ------------------------------
4. Encontre diretórios utilizando nome
Encontre todos os diretórios cujos nomes sejam "Tecmint" no diretório
/ (raiz).
# find / -type d -name Tecmint
/Tecmint
- ------------------------------
- ------------------------------
5. Encontre arquivos PHP utilizando nome
Encontre todos os arquivos php cujos nomes sejam exatamente
"tecmint.php"
# find . -type f -name tecmint.php
./tecmint.php
- ------------------------------
- ------------------------------
6. Encontre todos os arquivos PHP em um diretório
Encontre todos os arquivos cujos nomes terminam com ".php" dentro do
diretório de trabalho atual.
# find . -type f -name "*.php"
./tecmint.php ./login.php ./index.php
- ------------------------------
- ------------------------------
Parte II: Encontre arquivos baseados nas permissões deles
7. Encontre arquivos com permissões 777
Encontre todos os arquivos cujas permissões sejam 777 no diretório de
trabalho atual.
# find . -type f -perm 0777 -print
- ------------------------------
- ------------------------------
8. Encontre arquivos sem as permissões 777
Encontre todos os arquivos cujas permissões não sejam 777 no
diretório / (raiz).
# find / -type f ! -perm 777
- ------------------------------
- ------------------------------
9. Encontre arquivos SGID com permissões 644
Encontre todos os arquivos com o bit SGID configurado e cujas
permissões sejam 644.
# find / -perm 2644
- ------------------------------
- ------------------------------
10. Encontre arquivos com o bit Sticky ativo e com permissões 551
Encontre todos os arquivos contendo o bit Sticky ativo e cujas
permissões sejam 551.
# find / -perm 1551
- ------------------------------
- ------------------------------
11. Encontre arquivos SUID
Encontre todos os arquivos cujos bits SUID estejam ativos.
# find / -perm /u=s
- ------------------------------
- ------------------------------
12. Encontre arquivos SGID
Encontre todos os arquivos cujos bits SGID estejam ativos.
# find / -perm /g+s
- ------------------------------
- ------------------------------
13. Encontre arquivos somente leitura
Encontre todos os arquivos com permissão de somente leitura.
# find / -perm /u=r
- ------------------------------
- ------------------------------
14. Encontre arquivos executáveis
Encontre todos os arquivos com permissão de execução
# find / -perm /a=x
- ------------------------------
- ------------------------------
15. Encontre arquivos com permissão 777 e modifique para 644
Encontre todos os arquivos cuja permissão seja 777 e utilize o
comando "chmod" para reconfigurar a permissão para 644.
# find / -type f -perm 0777 -print -exec chmod 644 {} \;
- ------------------------------
- ------------------------------
16. Encontre diretórios com permissões 777 e modifique para 755
Encontre todos os diretórios cuja permissão de acesso seja 777 e
utilize o comando "chmod" para reconfigurar tal permissão para 755.
# find / -type d -perm 777 -print -exec chmod 755 {} \;
- ------------------------------
- ------------------------------
17. Encontre e remova um único arquivo
Para encontrar um único arquivo chamado "tecmint.txt" e removê-lo.
# find . -type f -name "tecmint.txt" -exec rm -f {} \;
- ------------------------------
- ------------------------------
18. Encontre e remova múltiplos arquivos
Para encontrar e remover múltiplos arquivos tais como ".txt" ou
".mp3", utilize:
# 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 encontrar todos os diretórios vazios sob certo caminho.
# find /tmp -type d -empty
- ------------------------------
- ------------------------------
21. Encontre todos os arquivos ocultos
Para encontrar todos os arquivos ocultos, utilize o comando abaixo.
# find /tmp -type f -name ".*"
- ------------------------------
- ------------------------------
Parte III: Procure por arquivos baseado em proprietários e grupos
22. Encontre um único arquivo com base no proprietário desse arquivo
Para encontrar todos ou um único arquivo chamado "tecmint.txt" sob o
diretório / (raiz) e cujo proprietário desse arquivo seja o usuário
"root".
# find / -user root -name tecmint.txt
- ------------------------------
- ------------------------------
23. Encontre todos os arquivos baseados no proprietário desses arquivos
Para encontrar todos os arquivos pertencentes ao usuário "Tecmint"
sob o diretório /home.
# find /home -user tecmint
- ------------------------------
- ------------------------------
24. Encontre todos os arquivos baseados no grupo desses arquivos
Para encontrar todos os arquivos pertencentes ao grupo "Developer"
sob o diretório /home.
# find /home -group developer
- ------------------------------
- ------------------------------
25. Encontre arquivos particulares de um usuário qualquer
Para encontrar todos os arquivos do tipo ".txt" pertencentes ao
usuário "Tecmint" sob o diretório /home.
# find /home -user tecmint -iname "*.txt"
- ------------------------------
- ------------------------------
Parte IV: Encontre arquivos e diretórios baseados em data e horário
26. Encontre todos os arquivos modificados nos últimos 50 dias
Para encontrar todos os arquivos os quais foram modificados nos
últimos 50 dias.
# find / -mtime 50
- ------------------------------
- ------------------------------
27. Encontre todos os arquivos acessados nos últimos 50 dias
Para encontrar todos os arquivos os quais foram acessados nos últimos
50 dias.
# find / -atime 50
- ------------------------------
- ------------------------------
28. Encontre todos os arquivos modificados nos últimos 50 até 100 dias
Para encontrar todos os arquivos os quais foram modificados
anteriormente aos últimos 50 dias, porém após os últimos 100 dias.
# find / -mtime +50 –mtime -100
- ------------------------------
- ------------------------------
29. Encontre arquivos modificados na última 1 hora
Para encontrar todos os arquivos os quais foram modificados na última
1 hora.
# find / -cmin -60
- ------------------------------
- ------------------------------
30. Encontre arquivos modificados na última 1 hora
Para encontrar todos os arquivos os quais foram modificados na última
1 hora.
# find / -mmin -60
- ------------------------------
- ------------------------------
31. Encontre arquivos acessados na última 1 hora
Para encontrar todos os arquivos os quais foram acessados na última 1
hora.
# find / -amin -60
- ------------------------------
- ------------------------------
Parte V: Encontre arquivos e diretórios baseados em tamanho
32. Encontre arquivos de tamanho de 50MB
Para encontrar todos os arquivos cujo tamanho seja de 50MB, utilize:
# find / -size 50M
- ------------------------------
- ------------------------------
33. Encontre arquivos com tamanhos variando entre 50MB e 100MB
Para encontrar todos os arquivos cujos tamanhos são maiores do que
50MB e menores do que 100MB.
# find / -size +50M -size -100M
- ------------------------------
- ------------------------------
34. Encontre e delete arquivos com tamanho de 100MB
Para encontrar todos os arquivos de tamanho de 100MB e deletar todos
eles utilizando para isso um único comando.
# find / -size +100M -exec rm -rf {} \;
- ------------------------------
- ------------------------------
35. Encontre arquivos específicos e delete eles
Para encontrar todos os arquivos cujos nomes terminam com ".mp3", com
mais do que 10MB de tamanho e ainda deletá-los com um único comando.
# find / -type f -name *.mp3 -size +10M -exec rm {} \;
- ------------------------------
- ------------------------------
É isso. Este post termina aqui. Em um próximo artigo serão
discutidos mais aspectos sobre outros comandos do GNU/Linux em
profundidade, com exemplos práticos. Envie a sua opinião sobre este
artigo utilizando a seção de comentários.
Ravi Saive
Comentários:
1. Ernesto diz:
21 de dezembro de 2012 as 12:03 am
O número 34 precisa ter um outro 0 no comando. O comando está
atualmente configurado para encontrar arquivos maiores do que
10MB e não 100MB conforme a descrição declara.
Resposta:
+ Ravi Saive diz:
December 21, 2012 at 11:30 am @Ernesto,
Obrigado, corrigido agora.
Resposta:
o Melvin diz:
March 23, 2013 at 8:06 pm
Ao tempo em que este post é bastante antigo. Posso
fazer duas sugestões?
34) ao invés de executar "-exec rm -rf", a opção que
menos sobrecarrega a CPU seria adicionar "-delete" ao
comando "find". Seria bom anotar e utilizar "-print"
primeiro para confirmar o que está sendo deletado ou
simplesmente o comando "find" entubado para o comando
"head" para confirmar alguns dos arquivos é um bom
passo antes de utilizar quaisquer comandos/opções
adicionais que poderiam deletar.
35) Bem parecido com o 34, uma vez que no comando está
faltando a opção de deleção.
2. robert h. williams diz:
24 de dezembro de 2012 as 11:41 am
Olá! estou contente por ter encontrado o seu site e os artigos
informativos. Pergunta: na linha de nº 3 "find /home -iname
tecmint.txt", qual é a maneira adequada de filtrar os resultados
desse comando de forma que os resultados em letras maiúsculas
sejam organizados separados dos resultados de letras minúsculas?
ex.: ……. Techmint.com Techmint.com1 Techmint.com2 …….
techmint.com techmint.com1 techmint.com2, etc., etc., etc.
Obrigado outra vez por toda a boa informação. Tenha um
Excelente, Prospero Dia! —rob
3. Mac diz:
29 de janeiro de 2013 as 9:27 pm
Você poderia explicar esta opção para mim? Eu sou novato em
linha de comando - ainda estou aprendendo.
#15 # find / -type f -perm 0777 -print -exec chmod 644 {} \;
os símbolos {} e o \
Eu estou um bocado confuso. Qualquer ajuda/conselho seria ótima.
Resposta:
+ Ravi Saive diz:
30 de janeiro de 2013 as 10:56 am
@Mac, Por favor, junte a nós no Facebook em Linux Inside
<https://www.facebook.com/pages/Linux-Inside/273296659355468>,
e você receberá a resposta para isso.
+ Melvin diz:
23 de março de 2013 as 8:13 pm
As chaves são marcadores de lugar para o arquivo que o
comando "find" encontra, e a barra invertida (\) é para que
o shell não interprete o ponto e vírgula (;), o qual
normalmente finaliza o comando.
4. vijaya diz:
02 de julho de 2013 as 1:50 pm
Isso é realmente de muita ajuda para iniciantes obrigado ...
5. Luis diz:
14 de julho de 2013 as 12:03 am
Como recuperar os arquivos eliminados com o comando:
# find / -type f -name *.mp3 -size +10M -exec ls -l {} \;
6. Joe diz:
16 de setembro de 2013 as 8:10 pm
No exemplo 22, a descrição deveria ser "sob o diretório raiz /"
ao invés de "sob o diretório /root".
Resposta:
+ Ravi Saive diz:
17 de setembro de 2013 as 1:07 pm Obrigado, corrigido no
artigo.
7. PDFformat diz:
09 de outubro de 2013 as 9:51 pm
Vocês poderiam por favor publicar as postagens no formato PDF?
Obrigado pelo post :)
8. Siddharth diz:
22 de outubro de 2013 as 2:45 am
35. Encontrar todos os arquivos do tipo ".mp3" com mais do que
10MB e deletá-los utilizando um único comando.
# find / -type f -name *.mp3 -size +10M -exec ls -l {} \;
— mas, não existe um comando para deletar os arquivos.
1) Como listar arquivos no intervalo (A001 to A090)? Suponha que
exista arquivos de logs cujos nomes iniciam com log.A001 até
log.A00nésimo ou pode ter mais.
2) Listar os arquivos criados em uma certa data.
3) Pesquisar o padrão de string "xyz" em todos os arquivos e
contar quantas vezes a string está presente em todas as
localizações.
Por favor, socorro.
9. karna diz:
13 de novembro de 2013 as 3:01 pm
No exemplo 35 penso que deveria constar "rm" ao invés de "ls -l"
Resposta:
+ Ravi Saive diz:
13 de novembro de 2013 as 5:31 pm Sim! deveria ser o comando
"rm". Obrigado, corrigido agora.
10. ram diz:
06 de dezembro de 2013 as 3:42 pm
Localizar arquivos regulares do usuário “username” e savar como
/tmp/backup
find / -user username -type f -exec cp -a ……………….
por favor complete isso ... necessário antes
11. Anudeep S P diz:
27 de janeiro de 2014 as 3:29 pm
Como nós podemos encontrar os arquivos dentro de um diretório com
respeito ao intervalo de datas e removê-los? Exemplo: eu quero
remover os arquivos criados entre “1º Jan 2012 8AM” e “5 Jan 2014
10PM”
+ Ravi Saive diz:
27 de janeiro de 2014 as 5:00 pm
Anu, por favor poste as suas questões na nossa recém
inaugurada seção "TecMint Ask" para respostas instantâneas
pelos nossos especialistas.
12. ngapakerz diz:
24 de fevereiro de 2014 as 2:53 pm
como eu utilizo estes dois como um único comando?
find -name ‘*.jpg’ -mtime +7 -exec jpegoptim {} \;
find -name ‘*.jpg’ -mtime +7 -exec chown www-data:www-data {} \;
obrigado :)
13. Rondinelli diz:
09 de março de 2014 as 7:44 pm
Incrível! muito útil!
14. Dinkar diz:
22 de abril de 2014 as 10:19 am
Como deletar um arquivo em um diretório o qual foi criado há 13
meses?
15. sameer diz:
04 de maio de 2014 as 7:00 am
esta é uma página muito útil e eu utilizei muitos destes comandos
após ver a sua página. muito obrigado por tal maravilhosa coleção
de comandos com exemplos. Tudo de bom para você
16. anonymous diz:
09 de maio de 2014 as 7:07 am
Este é um incrivelmente útil bloco de construção, obrigado!!
17. snarker diz:
03 de junho de 2014 as 7:19 pm
Você sabe, com HTML você pode converter uma tabela de conteúdos
em vínculos que levam o leitor direto a cada seção ...
simplesmente dizendo.
18. Sanjay diz:
13 de junho de 2014 as 12:31 pm
isto é muito útil para mim dado que eu sou novo em comandos de
shell. obrigado por postar artigos ...
19. Pravin shegokar diz:
08 de julho de 2014 as 8:29 pm
Alô, senhor. Eu estou trabalhando em projeto de migração. Eu
tenho uma breve questão senhor: como migrar todos os dados do
diretório "home" dos usuários para um novo sistema linux
utilizando shell script? Você vai me fornecer qualquer script ou
ideia para isso? Obrigado em antecipação.
+ Ravi Saive diz:
10 de julho de 2014 as 4:00 pm
Caro Pravin, Nós certamente fornecemos para você instruções
passo-a-passo sobre como migrar todos os usuários do Linux
de um servidor para um outro servidor utilizando alguns
truques de linha de comando. Até lá fique ligado nas
atualizações.
20. Andre diz:
02 de agosto de 2014 as 12:49 pm
Encontrar todos os arquivos maiores do que 20M no diretório
"home" e exibi-los ordenados:
find /home -type f -size +20M -exec du -h {} \; | sort -h
21. Bharath diz:
20 de agosto de 2014 as 5:16 pm
Eu quero deletar os arquivos e imprimir para o arquivo de saída
com data, hora e tamanho.
Resposta
+ Ravi Saive diz:
28 de agosto de 2014 as 3:16 pm
Bharath, eu entendo que você deveria tentar este comando:
# find /your-path -maxdepth 1 -type f -name "*.txt" >
# filestobedeleted.txt
22. Jec diz:
21 de outubro de 2014 as 6:43 pm
Olá senhor, Existe uma maneira de utilizar "find"/"locate" em uma
lista? Exemplo:
while read line do if locate “$line” then echo “Y: $line” else
echo “N: $line” fi done < $1
no meu caso, isso sempre retorna N: (line). Eu entendo que o
comando "locate" lê a minha variável como $line literalmente.
Também tentei utilizar o comando "find" aqui, mas com o mesmo
resultado. Algum ensinamento? Obrigado em antecipação. :)
Resposta
+ munaf diz:
30 de novembro de 2014 as 1:25 pm
Como descobrir o tamanho de um arquivo qualquer utilizando o
comando "find"
23. Farid Afshar diz:
02 de dezembro de 2014 as 6:22 am
Alô senhor, Eu estou tentando encontrar arquivos no GNU/Linux
utilizando o comando "find". Eu preciso procurar em um sistema
de arquivos montado nfs para listar todos os arquivos
pertencentes a um certo usuário. Exemplo:
drwxrwxr-x 2 afsharf staff 126976 Oct 9 14:20 trevor/ -rw-rw-r– 1
afsharf staff 22947599 Oct 9 08:52 troj.out -rwxr-xr-x 1 camachoe
staff 11752 Jun 25 2013 runtnav_beta_h* -rwxr-xr-x 1 camachoe
staff 11648 Jun 25 2013 runtnav_h*
Eu gostaria de encontrar arquivos pertencentes a “camachoe” no
diretório atual e sub-diretórios. Qualquer ideia de como fazer
isso utilizando o comando "find"? Esse é um sistema de arquivos
montado nfs. Obrigado em antecipação.
Resposta
+ Ravi Saive diz:
02 de dezembro de 2014 as 4:30 pm @Farid,
find . -user camachoe -ls
24. Rajkumar Yadav diz:
11 de dezembro de 2014 as 1:49 pm
Grandes artigos Obrigado!
25. Sunny diz:
22 de janeiro de 2015 as 6:07 pm
Oi, Como ver os arquivos em uma data particular? Suponha que eu
queira ver arquivos de 18 de janeiro de 2015 entre todos os
arquivos. Eu tentei +mtime, mas não está funcionando
find . -newermt 2015-01-18 -ls lrt
o comando acima não está funcionando para mim. Por favor, sugira
algo.
Resposta
+ Ravi Saive diz:
23 de janeiro de 2015 as 5:55 pm @Sunny,
Tente isto:
# find . -type f -newerat 2015-01-18 ! -newerat 2015-01-18
26. Anup diz:
11 de fevereiro de 2015 as 5:49 pm
Boa informação Tudo em um só lugar obrigado
27. Iv diz:
18 de fevereiro de 2015 as 2:35 pm
Oi. Grande artigo. Como encontrar arquivos executáveis no RHEL4 e
Solaris 9 e 10? Eu tentei com:
find / -executable -type f and find / -perm /u=x,g=x,o=x -type f
mas isso funcionou apenas no RHEL6. Obrigado!
28. md shamim diz:
27 de fevereiro de 2015 as 12:30 pm
Eu tenho de mover um diretório dentro do qual existem logs. Cada
diretório criado como 26022015 e eu quero mover o diretório,
exceto os 3 dias mais recentes.
29. Sandip Kasar diz:
07 de março de 2015 as 12:18 pm
Eu estou muito contente por você ter descrito o comando "find"
com exemplos. Obrigado mais uma vez e Mantenha postados os
assuntos relacionados com GNU/Linux.
30. Nagarjuna Reddy diz:
13 de março de 2015 as 12:01 pm
Muito Muito boa informação Comandos Find.
31. sunny desouza diz:
24 de abril de 2015 as 1:21 am
Caros Tecmints, Eu entendo que isso funciona para encontrar um
dos arquivos e para aplicar a ação executar sobre tais arquivos:
$ find / -name “error_*.txt” -exec ls -lrathi ‘{}’ “;”
porém, vocês podem fornecer exemplos acerca de múltiplos
arquivos? Como nós fazemos?
Exemplos: – se existem “find_*.txt” “list_*.csv” e mais
32. sunny desouza diz:
25 de abril de 2015 as 8:48 am
questão rápida :- Como nós encontramos um arquivo e então nós o
renomeamos (mv) esse mesmo arquivo com um único comando? A opção
-exec funciona com o mv? Algum exemplo?
Resposta:
+ Ravi Saive diz:
25 de abril de 2015 as 10:44 am @Sunny, Sim, você pode
utilizar ambos os comandos em um único, assim:
# find / -name file; mv file path or newfilename
- --------------- Fim da Tradução ---------------
Jamenson Ferreira Espindula de Almeida Melo
Usuário GNU/Linux nº 166197
https://linuxcounter.net/cert/166197.png
Impressão digital da chave:
234D 1914 4224 7C53 BD13 6855 2AE0 25C0 08A8 6180
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.26 (GNU/Linux)
iQEcBAEBCAAGBQJVYwARAAoJECrgJcAIqGGAP5YH/j0Rtz9AB8CW2USrXD5WJvUl
I15xq+PaJPLuucgtJEVMlyKP/yp6tQMB3BvO0IeZEw4Ibcv/TIvS4wp6s1bSI5CB
4h4SAgmKnNXBimwiPvggzbcS77b1Tc42zxkfWahc5lgBUzxqQ+WTnxXULl7DAxT3
TmDVl4yxtoUCJdG6muRMfWdBrbpj96w7uJjcFFmBjF5YH2Lq+9+r4hAT4/K8VkcI
OiYAn8Xlguz7XBlY4NMOhWwXVD1331TcCeHkLm73lqljvE0+OxOIffdjI3/P+nVM
6DtGU4ajASlAIRBp3bE3VztU1/5qynkEiJde5inBqaxm5JXpzb5khFbu/yLjbxw=
=0OB6
-----END PGP SIGNATURE-----
Nenhum comentário:
Postar um comentário