Buscar

comando find2

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 3, do total de 8 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 6, do total de 8 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Prévia do material em texto

Como willian encontrar arquivos no Linux com o comando find
Neste post, vou mostrar alguns exemplos de truques, na linha de comando, para encontrar arquivos entre os diretórios do seu PC Linux.
Os exemplos farão uso do comando find, já presente no sistema — o que significa que você não vai precisar instalar nada.
SAIBA MAIS:
Neste artigo, sobre o programa mpg123, há um exemplo do uso do comando find para criar listas de músicas. Se você se interessar, dê uma olhada!
Para tornar o tutorial mais fácil vou sugerir criar alguns diretórios e arquivos que serão usados nos exemplos deste artigo.
Se você quiser, pode alterar os nomes, mas não esqueça de adequar os exemplos deste texto às alterações que você fez.
Pra começar, recomendo criar um diretório e entrar nele, somente para brincar com o comando find. Abra um terminal e forneça os seguintes comandos:
	mkdir exemplos_find
	cd exemplos_find
Dentro do diretório criado, exemplos_find, crie alguns arquivos:
	touch MeuTextoNovo.txt
	touch MeuTexto.txt
	touch MeuTextoFalso.txt
	touch MeuTextoAntigo.txt
Agora, vamos criar um diretório backup e, dentro dele, vamos criar novamente aqueles mesmos arquivos:
	mkdir backup
	cd backup
	touch MeuTextoNovo.txt
	touch MeuTexto.txt
	touch MeuTextoFalso.txt
	touch MeuTextoAntigo.txt
… e voltamos ao diretório anterior, exemplos_find:
	cd ../
	ls -R
Como você pôde notar, a opção -R faz o comando ls perscrutar recursivamente outros subdiretórios:
clique para ampliar
Encontre arquivos usando name
O parâmetro name é básico no uso do comando find. No exemplo abaixo, vou mostrar como encontrar todos os arquivos de nome MeuTextoFalso.txt dentro do diretório atual e dentro dos subdiretórios deste:
	find -name MeuTextoFalso.txt
	./MeuTextoFalso.txt
	./backup/MeuTextoFalso.txt
Faça uma busca por nomes de arquivos ignorando maiúsculas e minúsculas
Este é mais um exemplo do uso básico do comando find. Só que, desta vez vou usar o parâmetro iname, que ignora se as letras estão em maiúsculas ou minúsculas durante a pesquisa.
	find -iname meutextoantigo.txt
	./backup/MeuTextoAntigo.txt
	./MeuTextoAntigo.txt
Assim, fica mais fácil, não é?
Como pesquisar com o find, limitando a recursividade
Em alguns momentos, você vai topar com diretórios com uma grande quantidade de subdiretório recursivos. Se você não tem interesse em pesquisar “tão profundamente”, pode limitar a recursividade do comando find.
O arquivo do sistema passwd está presente em vários subdiretórios. Veja:
	find / -name passwd
	/usr/bin/passwd
	/usr/share/bash-completion/completions/passwd
	/usr/share/lintian/overrides/passwd
	/etc/cron.daily/passwd
	/etc/passwd
	/etc/pam.d/passwd
Uma coisa que você deve ter notado é que a busca foi demorada em função de ter sido feita a partir do diretório raiz e em todos os subdiretórios do sistema — em alguns deles, você provavelmente não tinha permissão para fazer a busca.
Experimente limitar a recursividade do comando find a 2 subníveis, assim:
	find / -maxdepth 2 -name passwd
	find: `/root': Permissão negada
	find: `/lost+found': Permissão negada
	/etc/passwd
Esta pode ser uma forma mais rápida de encontrar o arquivo que interessa.
Aumente a profundidade da pesquisa do find com mindepth
O parâmetro -mindepth (minimum depth, ou profundidade mínima) estabelece a partir de que nível a recursividade deve começar. Experimente:
	find / -mindepth 3 -name passwd
Observe que os resultados (abaixo) são diferentes. Eu destaquei, com fundo cinza, aqueles válidos.
	find: `/root': Permissão negada
	find: `/home/soderberg/.cache': Permissão negada
	find: `/home/lost+found': Permissão negada
	find: `/sys/kernel/debug': Permissão negada
	 
	(...)
	 
	/usr/bin/passwd
	/usr/share/bash-completion/completions/passwd
	/usr/share/lintian/overrides/passwd
	/usr/share/doc/passwd
	/etc/cron.daily/passwd
	find: `/etc/cups/ssl': Permissão negada
	find: `/etc/polkit-1/localauthority': Permissão negada
	/etc/pam.d/passwd
Execute um comando em relação aos arquivos encontrados pelo find
Este tipo de ação é comumente usada em scripts, mas eu vou mostrar como usar na linha de comando.
Veja como fazer uma busca pelos arquivos “MeuTexto.txt”, ignorando se as letras estão em minúsculas ou maiúsculas, e executar o programa md5sum em cada um deles. Veja como:
	find -iname "meutexto.txt" -exec md5sum {} \;
O resultado que obtive foi este:
	d41d8cd98f00b204e9800998ecf8427e  ./MeuTexto.txt
	d41d8cd98f00b204e9800998ecf8427e  ./backup/MeuTexto.txt
e você?
Como inverter o resultado do comando find
E se, ao invés de mostrar os resultados encontrados, a pesquisa exibisse os resultados diversos do que foi pedido?
Ao usar o parâmetro -not, eu vou indicar ao comando find o que eu não desejo exibir nos resultados. Veja como funciona:
	find -not -iname "meutextoantigo.txt"
No resultado, abaixo, a string “meutextoantigo.txt” é a única que não é exibida.
	.
	./MeuTextoFalso.txt
	./MeuTexto.txt
	./backup
	./backup/MeuTextoFalso.txt
	./backup/MeuTexto.txt
	./backup/MeuTextoNovo.txt
	./MeuTextoNovo.txt
Experimente remover dos resultados o nome de arquivo “meutextofalso.txt”.
	find -not -iname meutextofalso.txt
Com este comando, as duas ocorrências do arquivo “MeuTexto.txt” são exibidas e as duas do “MeuTextoFalso.txt” são inibidas na lista. Note, ainda, que usei o texto fora das aspas, desta vez. Quando não há espaço entre as palavras, é possível dispensar as aspas.
	.
	./MeuTexto.txt
	./backup
	./backup/MeuTexto.txt
	./backup/MeuTextoAntigo.txt
	./backup/MeuTextoNovo.txt
	./MeuTextoAntigo.txt
	./MeuTextoNovo.txt
Encontre arquivos pelas suas permissões
É possível fazer uma busca no sistema para encontrar arquivos com base nas suas permissões. Você pode:
Encontrar arquivos que satisfaçam determinadas condições na sua lista de permissões
Verificar quando um arquivo corresponde a uma determinada lista de permissões
Fazer uma busca pela representação octal/simbólica
Para poder mostrar melhor o funcionamento destas funções vou precisar me afastar um pouco dos exemplos em que vínhamos nos baseando até agora, neste pequeno tutorial.
Observe, na listagem abaixo, as diferentes permissões dos arquivos:
	ls -l
	total 0
	-rwxrwxrwx 1 root root 0 2009-02-19 20:31 tudo para todos
	-rw-r--r-- 1 root root 0 2009-02-19 20:30 todo mundo lê
	---------- 1 root root 0 2009-02-19 20:31 nada para ninguém
	-rw------- 1 root root 0 2009-02-19 20:29 arquivo simples
	-rw-r----- 1 root root 0 2009-02-19 20:27 outros também podem ler
	----r----- 1 root root 0 2009-02-19 20:27 outros só podem ler
Se você deu uma olhada nos nomes dos arquivos, deve ter percebido que estes explicam (superficialmente) os atributos de suas permissões.
Isto posto, no exemplo que segue, vou mostrar como usar o find para encontrar arquivos com permissão de leitura para um grupo, que seja do tipo arquivo (file) e executar o comando de listagem ls para ele:
	find . -perm -g=r -type f -exec ls -l {} \;
O resultado é algo parecido com isto:
	-rw-r--r-- 1 root root 0 2009-02-19 20:30 ./todo mundo lê
	-rwxrwxrwx 1 root root 0 2009-02-19 20:31 ./tudo para todos
	----r----- 1 root root 0 2009-02-19 20:27 ./outros só podem ler
	-rw-r----- 1 root root 0 2009-02-19 20:27 ./outros também podem ler
Como encontrar arquivos com permissão de leitura apenas pro grupo, no diretório atual:
	find . -perm g=r -type f -exec ls -l {} \;
Experimente alterar o comando e aplicá-lo a outros diretórios, para ver as mudanças nos resultados.
Como último exemplo desta secção vou mostrar como encontrar arquivos com permissão octal 0666, ou seja, podem ser lidos e alterados por todos os usuários do sistema. Primeiro, vou alterar as permissõesde um dos arquivos que criamos no diretório exemplos_find:
	chmod 0666 MeuTextoNovo.txt
Em seguida, fazer a busca:
	find . -perm 0666 -type f -exec ls -l {} \;
O resultado:
	-rw-rw-rw- 1 justincase justincase 0 Mai  6 16:27 ./MeuTextoNovo.txt
Você pode fazer uma busca por arquivos executáveis (programas), assim:
	find /usr/ -executable -type f -exec ls --color {} \;
Use o comando find para encontrar arquivos vazios
Para isto, use o parâmetro -empty (vazio). No exemplo, abaixo, vou mostrar como fazer a busca, no seu diretório home:
	find ~ -empty
Para se restringir ao diretório atual e evitar a recursividade (busca em subdiretórios), use -maxdepth:
	find . -maxdepth 1 -empty
Os arquivos que nós criamos, neste tutorial, através do comando touch, estão vazios — nenhum conteúdo foi inserido neles.
	./MeuTextoFalso.txt
	./MeuTexto.txt
	./MeuTextoAntigo.txt
	./MeuTextoNovo.txt
Como encontrar pelo tamanho
No exemplo que segue, vou mostrar como encontrar os 7 maiores arquivos no diretório /usr/bin, incluindo seus subdiretórios
	find /usr/bin/ -type f -exec ls -s {} \; | sort -n -r | head -7
A execução pode ser um tanto demorada, dependendo da quantidade de arquivos envolvida.
Abaixo, segue o resultado que eu obtive:
	8724 /usr/bin/php5
	6264 /usr/bin/audacity
	5708 /usr/bin/gimp-2.8
	4972 /usr/bin/gdb
	4364 /usr/bin/shotwell
	4168 /usr/bin/aptitude-curses
	3788 /usr/bin/mplayer
Para ver os 7 menores, faça assim:
	find /usr/bin/ -type f -exec ls -s {} \; | sort -n  | head -7
O parâmetro -size pode ser usado para encontrar arquivos com um determinado tamanho ou maior do que um certo tamanho.
Veja como encontrar arquivos com tamanhos maiores que 100Mb no diretório /var:
	find /sys -size +100M
	/sys/devices/pci0000:00/0000:00:02.0/resource2_wc
	/sys/devices/pci0000:00/0000:00:02.0/resource2
Alguns diretórios do sistema, como eu já disse, podem precisar de privilégios administrativos para mostrar seu conteúdo.
Encontrar arquivos menores do que um certo número também é fácil:
	find /usr/share/icons -size -2k
Neste caso, a lista pode ser grande.
Encontre arquivos pelo tipo
Para encontrar arquivos do tipo socket:
	find . -type s
Para ver a relação de diretórios:
	find . -type d
	.
	./backup
Encontre os arquivos escondidos no seu diretório pessoal (home):
view source
print?
	find ~ -type f -name ".*"

Outros materiais