Você está na página 1de 19

find - exemplos de linha de comando.

Atualizado em: 29/09/2006


Sobre este documento O que find? Ambiente grfico filtros e redirecionamento localizar por usurio ou permisso procura por parte do nome de arquivo find + tar empacotar e compactar find + grep - Pesquisa dentro do arquivo find + rm - remover arquivos find + wc - Contar arquivos e linhas find + cp - copiar arquivos find + mv - mover arquivos find com excluso de arquivos especifico find por data de modificao do arquivo find por data e tipo de arquivo find + sort find + printf Converter arquivos dir e mdir ls Locate Apropos e whatis - procura nas pginas do man whereis, which, rpm (pacotes) find + sed Outros exemplos menos usados Indicaes

Sobre este documento


Exemplos de linha de comando e scripts com uso do find. Os comandos e dicas podem no atender as suas necessidades, no ser compatvel com sua instalao, use como referencia, tente adaptar ao seu ambiente.

O que find?
O programa find faz parte das instalaes de sistemas Linux, muito til na busca e procura de arquivos na rvore de diretrios do sistema, est presente em praticamente toda instalao padro.

Muito verstil nos critrios de pesquisa, por usurio, arquivo, data, permisses e muito mais. Extremamente poderoso, permite combinar resultados do find com expresses regulares, permite que o usurio especifique uma ao como remover, copiar e etc.. usado para encontrar arquivos que correspondam a vrias caractersticas dadas, e para desempenhar aes sobre esses arquivos. Vem no pacote findutils e seu executvel fica em /usr/bin/find, dependendo da distro pode mudar, use as ferramentas da distro para localizar em sua instalao. Pgina do manual.
man find find --help info find

Imprimir o manual do find man

-t find |lpr

No esquea do melhor de todos, Google, combine find com a expresso desejada.

Ambiente grfico
kfind - KDE - menu K -> executar comando -> na caixa de dialogo digite kfind Ou na linha de comando (prompt) de um konsole kfind No Gnome use gsearchtool No navegador, no endereo da URL : file:/// exibe a arvore de diretrios, funciona no Firefox, Konqueror, Galeon, Mozilla ...

filtros e redirecionamento
Combinar com outros filtros ou desviar o resultado para arquivo. Desvia o resultado do console para arquivo meuteste.
find /home/zago/guiaz/ -name "*.pdf" -exec echo {} \; > meuteste

Exibe o resultado somente dos arquivos contendo samba no nome.


find /home/zago/guiaz/ -name "*.pdf" -exec echo {} \; | grep samba

Inverter a seleo use a diretiva -v para pegar maiusculas e minusculas use -i.

find /home/zago/guiaz/ -name "*.txt" -exec echo {} \; | grep -iv gif

Cuidado com estes filtros, o grep trabalha com os resultados que vem antes do pipe |, tanto echo como rm ficam antes, a ao de echo exibir o resultado filtrado por find, ento o grep pega este resultado do find para filtrar, com o rm no lugar do echo isto no acontece, o rm simplesmente apaga o que atender a condio de procura do find, portanto com rm o filtro que vem depois de "|" fica sem efeito.

localizar por usurio ou permisso


Procurar por arquivos de um usurio especifico, exemplo do usurio zago root.
find / -user zago find . -user root

Exemplo para localizar e exibir no formato de ls -la. listar todos arquivos do usurio zago, troque pelo seu usurio na linha abaixo. find -user zago -exec ls -la {} \; Inverter o resultado, listar tudo que no for do usurio informado. find . ! -user zago -exec ls -la {} \; find . ! -user root -exec ls -la {} \; encontra todos os arquivos cujas permisses correspondam a 111 (executvel)
find . -perm +111 find / -perm +111 -type f Procurar em diretrio especifico, exemplo os executaveis do KDE. find /usr/lib/kde3/bin/ -perm +111 -type f

procura por parte do nome de arquivo


Procurar em /home/zago todos os arquivos que inicia com sa
find /home/zago -name sa*

procura no HD inteiro, (em HD com muitos arquivos esta procura pode ser demorada).
find / -name sa* find / -name nome-do-arquivo

Procurar arquivos .pdf abaixo do diretrio /home/zago.


find /home/zago -name *.pdf

No exemplo acima listar somente arquivos com terminao em .pdf em minusculo, prefira a opo abaixo que no diferencia maiusculo de minusculo e procura em qualquer parte do nome do arquivo.
find /home/zago -print | grep -i "pdf"

Procurar por nomes de arquivos que contm determinada expresso no nome, por exemplo: procurar no diretrio /home/zago/guiaz por arquivos que contenha no nome o termo cl9
find /home/zago/guiaz -print |grep -i "cl9" /home/zago/guiaz/samba/samba-cl9.txt /home/zago/guiaz/samba/smb.conf-cl9 /home/zago/guiaz/samba/samba-faq-cl9.txt

Refinando a pesquisa com duas condies, alguns comandos e resultados obtidos:


find /home/zago/guiaz/*2.6* -iname "*compilar*" [zago@faqcl10 zago]$ find /home/zago/guiaz/*2.6* -iname "*compilar*" /home/zago/guiaz/kernel-2.6-compilar.txt [zago@faqcl10 zago]$ find /home/zago/guiaz/*2.6* -iname "*txt*" /home/zago/guiaz/kernel-2.6-compilar.txt /home/zago/guiaz/kernel-2.6.txt find /lib/modules/*2.6.5* -iname "*nvidia*" [root@cl10 root]# find /lib/modules/*2.6.5* -iname "*nvidia*" /lib/modules/2.6.5-63077cl/kernel/drivers/char/agp/nvidia-agp.ko /lib/modules/2.6.5-63077clsmp/kernel/drivers/char/agp/nvidia-agp.ko [root@cl10 root]# find /lib/modules/*2.6.5* -iname "*smp*" /lib/modules/2.6.5-63077clsmp [root@cl10 root]# find /lib/*mod* -iname "*driv*" /lib/modules/2.6.5-63077cl/kernel/drivers /lib/modules/2.6.5-63077cl/kernel/sound/drivers /lib/modules/2.6.5-63077clsmp/kernel/drivers /lib/modules/2.6.5-63077clsmp/kernel/sound/drivers

Outros exemplos:
find /home/zago/ -iname "cache*"

find + tar empacotar e compactar


Pegar todos arquivos .txt de /tmp/guiaz para criar guiaz.tar.gz
find /tmp/guiaz -name "*.txt" | xargs tar -zcvf guiaz.tar.gz

Alguns exemplos de uso combinando find com tar.


find /home/zago/guiaz -mtime -1 -type f -print | tar zcvf meusarq.tar.gz -T tar -zcvf meusarq.tar.gz `find . -user zago -print` tar -zcvf meusarq.tar.gz `find /home/zago/docs -user zago -print`

Veja mais exemplos e dicas sobre tar http://www.zago.eti.br/tar.html

find + grep - Pesquisa dentro do arquivo


Procurar dentro do arquivo use o grep, por exemplo, pesquisar dentro de todos os arquivos que esto abaixo do diretrio squid
grep "frase que procuro" -r /var/log/squid/ find /var/log/squid/ -type f -exec grep "frase que procuro" {} \; find /var/log/ -name "*.log" | xargs grep -E "frase que procuro" Procura em todos .txt que esto abaixo de /tmp/guiaz find /tmp/guiaz -name "*.txt" | xargs grep -E "frase que procuro" Procura somente no diretrio corrente. find -type f -maxdepth 1 | xargs grep -E "frase que procuro" procura em *.c and *.h por "search string" no diretrio corrente e abaixo find -name "*.[ch]" | xargs grep -E "frase que procuro"

pesquisa com grep - FAQ e dicas http://www.zago.eti.br/grep.txt

find + rm - remover arquivos


ATENO!, CUIDADO!, redobre os cuidados e ateno com uso do "rm" Uso do find combinado com rm, mv e outros comandos destrutivos pode causar serios problemas, um simples erro de interpretao pode obter resultados diferente do esperado, quando executado como root pode danificar todo o sistema, todo cuidado pouco. Alguns exemplos, encontrar e apagar todos os temporarios .txt~ em /home/zago /guiaz, ideal em scripts, no pede confirmao. Diminua os riscos, pratique em ambiente de testes, antes de remover arquivos, tente conferir os resultados com "echo" ou "ls", depois de confirmado os resultados,

ento faa a troca para "rm". Alguns exemplos de uso do com echo em lugar de rm, na linha de comando ou script, troque rm por echo, os arquivos que listar na tela so os memos que sero apagados quando executar a linha de comando com rm, ex. pra testar, (com echo ou ls -la em lugar de rm).
find /home/zago/guiaz/ -name "*.txt~" -exec echo {} \; find /home/zago/guiaz/ -name "*.txt~" -exec ls -la {} \;

Ou redirecione a saida para arquivo e depois verifique o contedo do arquivo com seu editor de texto preferido, exemplo da linha de comando acima, redirecionando o resultado para /tmp/meuteste.txt
find /home/zago/guiaz/ -name "*.txt~" -exec ls -l {} \; > /tmp/meuteste.txt

Depois de conferir o resultado, para remover, faa a troca do echo ou ls -la por rm, exemplo.
find /home/zago/guiaz/ -name "*.txt~" -exec rm {} \;

procurar e apagar um arquivo especifico.


find /caminho/ -name nome_do_arquivo -type f | xargs rm -f

Listar no console os arquivos que esto sendo removidos, no tem pedido de confirmao, somente exibe no console os arquivos removidos.
find /home/zago/guiaz/ -name "*.txt~" -exec rm -fv {} \;

Incluir tambm sub-diretrios requer "r", ento use neste formato;


find /home/zago/guiaz/ -name "*.txt~" -exec rm -rfv {} \;

Redirecionar para arquivo a lista de todos os arquivos removidos;


find /home/zago/guiaz/ -name "*.html" -exec rm -fv {} \; > htmlapagados.txt

Pedir confirmao antes de remover o arquivo, altere -exec por -ok,


assim no pede confirmao: find /home/zago/guiaz/ -name "*.txt~" -exec rm {} \;

O mesmo comando acima modificado pra pedir confirmao, com -ok pede confirmao para excluso, ideal pra usar na linha de comando.
find /home/zago/guiaz/ -name "*.txt~" -ok rm {} \;

Ex. [zago@faqcl9 guiaz]$ find /home/zago/guiaz/ -name "*.gif" -ok rm {} \; < rm ... /home/zago/guiaz/tmp/admcorreiopq.gif > ? y < rm ... /home/zago/guiaz/zagop.gif > ? n < rm ... /home/zago/guiaz/pinguin.gif > ? n

Procura em todos os diretrios e apagar todos os arquivos .old, pede confirmao pra cada um.
find / -name "*.old" -ok rm {} \;

Script para remover todos .mp3 do disco


#!/bin/bash for arq in $(find / -name *.mp3) do rm -rf $arq done

Remover de um diretrio especifico, informe o caminho completo em lugar da / no exemplo acima.

find + wc - Contar arquivos e linhas


Contar arquivos, saber quantos .txt existem em /home/zago
find /home/zago/guiaz/ -name "*.txt" | wc -l

Contar somente os alterados nas ultimas 24 horas


find /home/zago/guiaz -mtime 0 | wc -l

Listar todos .txt com a quantidade de linhas de cada arquivo;


find /home/zago/guiaz/ -name "*.txt" -exec wc -l {} \;

find + cp - copiar arquivos


Procurar arquivos especificos e copiar para outro diretrio Ideal em script de backup, montar imagem ISO para queimar CD/DVD e etc.. crie o diretrio destino ou utilize um j existente, exemplo para copiar todos os .txt de /home/zago/guiaz para /home/backup/faq
find /home/zago/guiaz -name \*.txt -type f -exec cp {} /home/backup/faq \;

Cuidado com este comando, no cria a arvore de diretrios no destino, arquivos de subdiretrios que atente a condio sero copiados no raiz do diretrio destino, portanto mistura tudo e arquivos com mesmo nome sero sobrescritos. Para no descer nos sub-diretrios, copiar somente arquivos do diretrio indicado, use (-maxdepth 1), exemplo para copiar somente arquivos do diretrio corrente e que foram modificados nas ultimas 24 horas.
find -maxdepth 1 -mtime 0 -exec cp {} /home/backup/faq \;

Manter as permisses e ID do dono do arquivo acrescente -ax, ex.


find /home/zago/guiaz -name \*.txt -type f -exec cp -ax {} /home/backup/faq \;

find + mv - mover arquivos


Localizar arquivos com mais de 30 dias no diretrio /var/lib/smart/packages e mover para o diretrio /home/rpmsmart
mkdir /home/rpmsmart localizar e listar, testar o resultado do comando find /var/lib/smart/packages -mtime +30 -exec echo {} \; mover arquivos, trocar echo no comando acima por rm no comando abaixo. find /var/lib/smart/packages -mtime +30 -exec mv {} /home/rpmsmart \;

Copiar arquivos, veja tpico find + cp.

find com excluso de arquivos especifico


Find com restrio, excluso de arquivos na listagem.
find . -name A-\*.html ! -name A-menu.html ! -name A-judas.html

Com rm - remover todos que o filtro pegar, exceto os indicados depois da negao (!)
find . -name A-\*.html ! -name A-menu.html ! -name A-judas.html -exec rm -f {} \;

find por data de modificao do arquivo

O find tem os "trs tempos" tpicos de todo FS Unix, pode pesquisar por minuto, dia, data especifica, til na procura de arquivos modificados ou acessados. A pesquisa compara o tempo informado com a data e hora atual do sistema. Direto do man find (copia parcial do CL10, somente algumas partes sobre tempo), tem mais opes no man
Argumentos numricos pode ser especificados como +n -n n para maior que n, para menor que n, para exatamente igual a n.

-amin n Arquivo foi acessado em n minutos atrs. -anewer file Arquivo foi acessado mais recentemente do que file tenha sido modificado. -anewer afetado por -follow somente se -follow vier antes que -anewer na linha de comandos. -atime n Arquivo foi acessado pela ltima vez nas ltimas *24 horas. -cmin n O status do arquivo foi alterado em at n minutos atrs. -cnewer file O status do arquivo foi alterado mais recentemente do que file foi modificado. -cnewer afetado por -follow somente se -follow vier antes que -cnewer na linha de comando. -ctime n O status do arquivo foi mudado nas n*24 horas atrs. -mmin n Os dados dos arquivos foram modificados em n minutos atrs. -mtime n Os dados foram modificados em at n*24 horas atrs -newer file O arquivo foi modificado mais recentemente que file. -newer afetado por -follow somente se -follow vem antes de -newer na linha de comando.

Exemplo de comando para listar somente os arquivos modificados durante os ultimos 3 minutos dentro do diretrio /tmp/txt. find /tmp/txt -type f -mmin -3 Onde: /tmp/txt o diretrio de pesquisa. -type f indica qual o tipo de arquivo, se arquivo regular, diretrio, link e etc..

-mmin -3 lista somente os modificados em tempo inferior a 3 minutos, com sinal (+) +3 lista somente arquivos que foram modificados a mais de 3 minutos, 3 sem o sinal lista somente os modificados exatamente a 3 minutos passados, tempo decorrido igual a 3 minutos, cuidado com esta contagem, 3 sem sinal exatamente igual, com - ou + no inclue os minutos informado, portanto so tempos diferente, menor, igual ou maior, -3 lista somente quando o tempo decorrido for menor que 3 minutos e no menor ou igual. Explicando de outra maneira.
find /tmp/txt -type f -mmin -3 | | | | | | | | | | | |____ tempo para o paramentro anterior -3, 3 ou +3 | | | | |________ modificados em n minutos conforme paramentro seguinte. | | | | -ctime para multiplos de 24 e mais opes no man. | | | |_ f = arquivo regular, d=diretrios (veja opes no man) | | |____ arquivo do tipo definido no parametro seguinte | |_______ caminho da pesquisa, diretrio e sub-diretrios onde pesquisar |_________ executar o comando find

Passe o resultado do comando para outro aplicativo (comando), use "|" entre o final da linha e os comandos como exec, xargs, cut, sed, awk e etc... Alguns exemplos com xargs executar rm, exec executar cp, aplicar somente nos arquivos que atende a condio, . remover arquivos modificados a menos de 3 minutos. find /tmp/txt -type f -mmin -3 | xargs rm -rf remover arquivos modificados a mais de 3 dias (3*24horas) find /tmp/txt -mtime +3 -type f | xargs rm -rf Copiar para outro diretrios os modificados a menos de 3 minutos. find /tmp/txt -type f -mmin -3 -exec cp -ax {} /home/backup/faq \; Mais alguns exemplos de comando. -mtime 0 procura por modificados nas ultimas 24 horas. Procurar em todo o HD find
/ -mtime 0

Remover arquivos por data, alguns exemplos;


find /dir -mtime +30 -exec rm {} \;

Onde +30 = mais de 30 dias passados, em lugar de -mtime +30 pode variar com -ctime e -atime, com o -exec pode modificar (rm), para outras opes como cp, mv ou at mesmo exibir o resultado no console com echo para testar e conferir antecipadamente o que ser apagado com rm, ou simplesmente ver quais arquivos no foram modificados nos ultimos 30 dias, exemplo;

find /home/zago/guiaz -mtime +30 -exec echo {} \; find /home/zago/guiaz -mtime +30 -exec ls -la {} \;

Se o resultado no console for o que realmente quer apagar, use a seta para voltar a linha de comando e altere de echo para rm. Combinar pesquisa incluindo data e nome de arquivo, exemplo de procura por arquivos que iniciam com "z" e no foram modificados a mais de 90 dias.
find /home/zago/guiaz/ -mtime +90 -and -name "z*" -exec echo {} \;

No exemplo acima exibe o resultado no console, caso queira outra ao, altere echo para o comando que deseja executar; rm, cp, mv e etc... Procurar abaixo de um diretrio por arquivos modificados nas ultimas 24 horas, menos de um dia, por exemplo em tudo abaixo de /home/zago
find /home/zago/guiaz -mtime 0

Parte do script que utilizo pra atualizar o FAQ (site), em resumo faz a copia para outro diretrio dos arquivos modificados nas ultimas 24 horas e depois envia por ssh pra uma maquina e por ftp pra outra Neste exemplo cortei varias linhas pra encurtar o script, a finalidade aqui servir de modelo.

#!/bin/bash cd /home/zago rm -rf Linux-BR-FAQ* tar -zcvf Linux-BR-FAQ-`date +%d.%b.%Y`.tar.gz --exclude /home/zago/guiaz/apostilas --exclude /home/z chmod 777 Linux-BR-FAQ-`date +%d.%b.%Y`.tar.gz #rm -rf /home/zago/atusite mkdir /home/zago/atusite cd /home/zago/guiaz #apaga todos .txt~ (temporarios) find /home/zago/guiaz/ -name "*.txt~" -exec rm {} \; find -maxdepth 1 -mtime 0 -exec cp {} /home/zago/atusite \; cd /home/zago/guiaz/samba mkdir /home/zago/atusite/samba find -maxdepth 1 -mtime 0 -exec cp {} /home/zago/atusite/samba \; cd /home/zago/guiaz/modem mkdir /home/zago/atusite/modem find -maxdepth 1 -mtime 0 -exec cp {} /home/zago/atusite/modem \; #--corte de algumas linhas-cd /home/zago/atusite scp -r * zago@192.168.1.2:/srv/www/default/html/zago/ cd /home/zago scp Linux-BR-FAQ* zago@192.168.1.2:/srv/www/default/html/zago/faq/ rm -rf Linux-BR-FAQ* cd /home/zago/docs ftp -vn www.zago.eti.br < atusite rm -f /home/zago/atusite/modem/* rm -f /home/zago/atusite/samba/* poweroff exit

Observe que no script acima tem estas linhas:


cd /home/zago/docs ftp -vn www.zago.eti.br < atusite

A primeira linha muda de diretrio e a segunda executa o script de ftp "atusite" que est dentro do diretrio docs, dentro deste "atuftp" tem os comandos de ftp, faz upload por diretrio, o contedo dele com a senha modificada este:
# cat /home/zago/docs/atusite user meulogin minhasenha prompt lcd /home/zago/atusite/ cd htdocs mput * lcd /home/zago/atusite/modem cdup cd modem mput * lcd /home/zago/atusite/samba cdup cd samba mput * #---corta---

find por data e tipo de arquivo


Procurar abaixo de determinado diretrio, somente arquivos .tar.gz com mais de 10 dias, cuidado com os curingas, faa testes antes com echo para ver o resultado, veja neste exemplo o *.tar.gz entre aspas. find /mnt/hd2/backup/ -name "*.tar.gz" -mtime +10 -exec echo {} \; Se o resultado acima atende a procura, para apagar (remover), troque echo por rm. find /mnt/hd2/backup/ -name "*.tar.gz" -mtime +10 -exec rm {} \;

find + sort
Passe o resultado do "find" via pipe "|" para "sort" ordenar. Resulado longo ou filtro complexo, considere salvar em arquivo para depois ordenar. Listar arquivos por ordem de data. find /tmp -type f -printf '%TY-%Tm-%Td %TH:%TM:%TS %p\n' | sort Altere o caminho para o diretrio que deseja pesquisar, tambm pode alterar os separadores /tmp -type f -printf '%TY-%Tm-%Td %TH:%TM:%TS %p\n' | sort

Alguns exemplos mostrando somente nomes de arquivos


Em ordem normal find /tmp/guiaz -type f -printf '%f\n' | sort Invertendo a ordem find /tmp/guiaz -type f -printf '%f\n' | sort -r resultado na mesma linha sem separador find /tmp -type f -printf '%f' resultado na mesma linha com separador, neste exemplo " ; ", troque pelo caractere desejado find /tmp/guiaz -type f -printf '%f ; ' Com quebra de linha, um nome por linha (\n) insere a quebra de linha find /tmp/guiaz -type f -printf '%f\n'

Outras ferramentas Criar arquivo com a lista de arquivos que contm "dicas-l.unicamp.br/", eliminar os repetidos com sort -u grep "dicas-l.unicamp.br/" -r /home/zago/guiaz/ | cut -d":" -f1 | sort -u > /tmp/altera.txt

find + printf
Alguns exemplos mostrando somente nomes de arquivos
Em ordem normal find /tmp/guiaz -type f -printf '%f\n' | sort Invertendo a ordem find /tmp/guiaz -type f -printf '%f\n' | sort -r resultado na mesma linha sem separador find /tmp -type f -printf '%f'

Caminho, nome, ltimo acesso e permisso


find /home/zago/guiaz/A-menu.t2t -type f -printf '%p %a %m\n' /home/zago/guiaz/A-menu.t2t Wed Jul 26 22:24:43 2006 644

Consulte o manual do find (man find), tem muitas opes, vema mais exemplos e cpia parcial do manual do Conectiva 10 (em portugus). find - exemplos em linha de comando e script http://www.zago.eti.br/find.html

Converter arquivos

Linha de comando para converter de .txt para .hmtl via txt2tags, aplicada no script de atualizao do FAQ (veja o script http://zago.eti.br/atusite). No sei lidar com HTML, meus html so textos formatados para txt2tags com terminao .t2t, antes de fazer upload precisa rodar o script de converso para html, para evitar acidentes, fao copia e converso dos arquivos em outro diretrio, um script faz a copia para outro diretrio, copia somente dos arquivos modificados nas ultimas 24 horas, neste script, antes do upload executa estas linhas:
find /home/zago/atusite/ -name "*.t2t" -exec python /home/zago/t2t/txt2tags -t html {} \; find /home/zago/atusite/ -name "*.t2t" -exec rm {} \;

Onde a primeira linha faz a converso;


/home/zago/atusite/ = arvore com copia dos arquivos e diretrios modificados. /home/zago/t2t/txt2tags = local do scritp que faz a converso -t html = diretiva para txt2tags.

A segunda linha apaga todos os .t2t, desta forma somente os html sobem para o site, na minha maquina no tem arquivos .html e no site no tem .t2t. Faa adaptao ou modifique para sua aplicao, tem muitas possibilidades de uso, pode substituir o uso de python por (tr), (dos2unix) e muitos outros. Alterei o script para criar o html no mesmo diretrio dos .txt, achei melhor incluir os html na copia do FAQ compactada para download. Converter em todos os sub-diretrios, converter somente os modificados nas ultimas 24 horas. find /home/zago/guiaz/ -mtime 0 -name "*.t2t" -exec python /home/zago/t2t/txt2tags -t html {} \;

dir e mdir
mdir - Quando instalado o pacote mtools, permite o uso do dir para acesso ao floppy, unidade de disquete, com comandos no formato DOS, veja mais sobre o pacote mtools no FAQ http://www.zago.eti.br/mtools.txt dir - algumas distro, como exemplo SUSE, quando instalado o pacote coreutils, pode usar o comando dir no sistema de arquivos do Linux.

ls
ls - listar arquivos, tem muitas opes como lsusb, lspci, lsmod, e muito mais, veja mais sobre ls e outras opes que iniciam com ls

http://www.zago.eti.br/ls.txt

Locate
Locate faz parte do metapacote slocate, faz parte dos pacotes instalados na maioria dos perfis de instalao, para instalar, no seu gerenciador de pacotes procure por slocate Locate localiza arquivos mais rpido que o find, a explicao simples, o find varre todo o caminho indicado, locate consulta um banco de dados, para obter resultados mais precisos, atualize o banco de dados antes da pesquisa.
updatedb

Formato da linha de comando locate

nome-do-arquivo

Note que o updatedb precisa ser feito periodicamente, mas no toda vez que for executar o locate, normalmente est configurado no crontab para atualizao periodica, com esta configurao em maquinas que ficam ligadas direto, a atualizao automatica. Consulte o manual man
locate

Apropos e whatis - procura nas pginas do man


Quando voc sabe o que quer fazer, mas desconhece o comando apropriado
man -k keyword

Onde keywork o termo, comando ou palavra que procura, ( -k ) equivalente ao comando apropos, ( -K ) pesquisa por uma determinada cadeia de caracteres em TODAS as pgina de manual, ou
apropos keyword

Quanto mais abrangente a keyword, maiores as chances de encontrar o que procura. Nota: keyword pode ser qualquer verbo ou nome que possa descrever o que voc est tentando fazer, bom lembrar que tudo em ingles, veja os resultados na procura por copia:
man -k copia copia: nothing appropriate man -k copiar copiar: nothing appropriate

Agora com a keyword em ingles, veja o resultado de: man -k copy


man -k copy cp cpio dd ginstall [install] mcopy scp xfs_copy xfs_rtcp

(1) (1) (1) (1) (1) (1) (8) (8)

copy files and directories copy files to and from archives convert and copy a file copy files and set attributes copy MSDOS files to/from Unix secure copy (remote file copy program) copy the contents of an XFS filesystem XFS realtime copy command

Quem quem no entenda o ingles faa como eu, use a intuio que funciona, tente com variaes da palavra, partes da palavra que voce acha que possa ser, sinominos, e etc..., vale tambm usar um tradutor, mesmo que seja o google ou altavista para traduzir palavras do ingles para portugues, pode acreditar, muito simples, fcil e prtico, basta tentar. Diretamente do man whatis
whatis - procura por palavras no banco de dados do whatis. SINOPSE whatis palavra_chave ... DESCRIO O whatis procura palavras-chaves em um conjunto de arquivos de banco de dados contendo pequenas descries de comandos do sistema, e exibe o resultado na sada padro. Somente sero exibidas palavras em caso de concordncia completa.

Resultado da procura por find


whatis find find

(1)

- search for files in a directory hierarchy

FAQ sobre as pginas do man http://www.zago.eti.br/man.txt

whereis, which, rpm (pacotes)


whereis

- exibe a localizao do arquivo informado, binrios(executveis), incluindo as pginas do manual (man page) . whereis nome_do_pacote
whereis ping ping: /bin/ping /usr/share/man/man8/ping.8.gz

man whereis
which

- exibe o caminho completo quando o executavel est no PATH. man which

which ping /bin/ping echo `which ping` /bin/ping

rpm para localizar pacote instalado. rpm -qa |grep nome_do_pacote


# rpm -qa |grep ping perl-net-ping-2.16-28204cl kdegames-kjumpingcube-3.1.1-26657cl ping-0.17-25611cl fping-2.2b1-11524cl kde-i18n-es-docs-kdegames-kjumpingcube-3.1.1-26675cl

Use o gerenciador de pacotes da distro para obter mais informaes sobre os pacotes do sistema.

find + sed
Pegar somente o nome de arquivos sem a extenso, ou remover a extenso.
Listar somente nome de arquivos find /home/zago/guiaz -name "*.txt" -exec basename {} \; listar somente nome de arquivos sem extenso find /tmp/guiaz -name "*.txt" -exec basename {} \; | sed s/"\.txt"//g

Mais dicas sobre basename, man

basename

Outras ferramentas como cut e awk servem como filtro para pegar partes do nome. Localizar e substituir em todos arquivos find /home/zago/guiaz -name "*.*" -exec sed -i s/"Dicas-L.unicamp.br"/Dicasl.com.br/g {} \; sed - Localizar e substituir palavras em arquivos http://www.zago.eti.br/script/sed.html ls - FAQ e exemplos com resultados de ls http://www.zago.eti.br/ls.txt

Outros exemplos menos usados


Resultado com linhas numeradas, acrescente (| cat -n)

find /home/zago/guiaz | cat -n

Quando a pesquisa for complexa e tiver dificuldade na montagem da linha de comando, crie um script para ser executado com find, exemplo para chamar o script procura.sh, execute:
find /caminho/diretorio -exec procura.sh {} "frase que procuro" \;

Procurar links - listar todos os links.


find / -type l

prucurar em todo o HD e volumes montados, use a /


find / -name ping find / -name ping -print

Procurar por tamanho


find /home/zago -size +5000k find . -size +10000 -print

Listar somente os arquivos com tamanho zero, (zero bytes) find . -size 0 Procurar por dois tipos de arquivos, exemplo de procura por arquivos .txt e .html, acessados a mais de 5 dias, linha de comando:
find /home/zago/guiaz \( -name \*.txt -o -name \*.html \) -atime +5

Ou sem condio de tempo, listar todos os .txt e .html de /home/zago/guiaz:


find /home/zago/guiaz \( -name \*.txt -o -name \*.html \)

Copiar todos os .txt de /home/zago/guiaz para /home/backup/faq


find /home/zago/guiaz -name \*.txt -type f -exec cp {} /home/backup/faq \;

Cuidado com este comando, no cria a arvore de diretrios no destino, arquivos de subdiretrios que atente a condio sero copiados pra raiz do diretrio destino, portanto mistura tudo e sobrescreve arquivos com mesmo nome. Manter as permisses e ID do dono do arquivo acrescente -ax, ex.
find /home/zago/guiaz -name \*.txt -type f -exec cp -ax {} /home/backup/faq \;

Indicaes
Tutoriais, documentao e outros FAQ relacionados a procura ou expresses regulares. find + rm, localizar e remover arquivos http://www.zago.eti.br/rm.txt Localizar expresses nos logs, acompanhar os registros no momento da gravao, procure por tail em: http://www.zago.eti.br/log.txt Dicas sobre data, nomear arquivos com data, diretivas e mais sobre data. http://www.zago.eti.br/script/data.html Pgina principal deste site (FAQ) http://www.zago.eti.br/menu.html