http://www.zago.eti.br/find.txt Neste documento estão as copias de mensagens da Lista Linux-br Dicas, exemplos de comandos e script estão em novo endereço; http://www.zago.eti.br/script/find.html Neste FAQ inclue mensagens sobre locate, use CTRL+F e procure por locate. Use CTRL+F para refinar a pesquisa. Linha de: **************** separa mensagens ou tópicos. ******************************************************** Zago http://www.zago.eti.br/menu.html FAQ e artigos sobre Linux ******************************************************** Ambiente texto, console, shell, konsole, terminal .... No CL9 e CL10 o help está em português, no prompt digite: man find find --help info find veja também sobre o uso dos comandos find e rm, localizar arquivos com o comando find e apagar com rm: http://www.zago.eti.br/rm.txt Localizar e substituir palavras em arquivos, veja sobre o sed em: http://www.zago.eti.br/sed.txt Localizar expressões nos logs, acompanhar os registros no momento da gravação, veja sobte o comando tail, veja sobre ele em: http://www.zago.eti.br/log.txt Imprima o manual do find: man -t find |lpr para localizar arquivos veja também os comandos: dir mdir locate veja também: http://www.zago.eti.br/ls.txt http://www.zago.eti.br/mtools.txt http://www.zago.eti.br/rpm.txt http://www.zago.eti.br/apt.txt http://www.zago.eti.br/bash.txt http://www.zago.eti.br/rm.txt http://www.zago.eti.br/path.txt http://www.zago.eti.br/script/ *************************************************************************** onde inclui critérios de busca e ações. Exemplos: find . -type l -exec ls -l {} \; encontra todos os arquivos que correspondam ao padrão e os apaga, pedindo sua confirmação antes. find . -perm +111 encontra todos os arquivos cujas permissões correspondam a 111 (executável). procurar em todo o HD find . -user root find / -perm +111 -type f Procurar por arquivos de um usuário especifico, por exemplo do usuário zago: find / -user zago procurar em diretório especifico, por exemplo os executaveis do KDE. # find /usr/lib/kde3/bin/ -perm +111 -type f find / -type l procura por todos os links. prucurar em todo o HD find / -name ping ou find / -name ping -print procurar por tamanho, exemplo procurar no /home/zago arquivos com mais de 5MB find /home/zago -size +5000k procurar em todo o HD (todos os volumes montados) arquivos maiores que 10K find . -size +10000 -print procurar em todo o HD find / -size +5000k Procurar por dois tipos de arquivos, por exemplo, procurar por arquivos .txt e .html, acessados a mais de 5 dias, veja exemplo da linha de comando: find /home/zago/guiaz \( -name \*.txt -o -name \*.html \) -atime +5 Ou sem condição de tempo, listar todos os .txt e .html de /home/zago/guiaz: find /home/zago/guiaz \( -name \*.txt -o -name \*.html \) LS Para localizar arquivos podemos usar também o "ls" quando usando em um terminal dentro do modo gráfico temos a barra de rolagem, em modo prompt não temos a barra mas podemos voltar (rolar a tela) com SHIFT+PAGEUP ou combinar com "|more" que provoca uma parada por página (tela): ls |more du -a |grep nome_do_arquivo.extenção PROCURAR PALAVRAS DENTRO DOS ARQUIVOS $ grep "frase que procuro" -r /home/zago/guiaz/ Este comando faz uma procura em todos os arquivos no caminho indicado e lista o caminho e nome do arquivo que contém a frase procurada. Exemplo da pesquisa da palavra telnet no arquivo /etc/inetd.conf retornou somente a linha completa que contém a palavra telnet: grep telnet /etc/inetd.conf telnet stream tcp nowait root /usr/sbin/tcpd in.telnetd Exemplo da pesquisa da palavra telnet em todos os arquivos do diretório /etc retornou todos os diretórios pesquisados, listando todos os caminhos, arquivos e linha que contém a palavra telnet: grep telnet /etc/* grep: /etc/httpd: É um diretório grep: /etc/icecast: É um diretório /etc/inetd.conf:telnet stream tcp nowait root /usr/sbin/tcpd in.telnetd grep: /etc/init.d: É um diretório /etc/ippl.conf:# Log telnet connections using ident and name resolution /etc/ippl.conf:log options ident,resolve tcp port telnet grep: /etc/iproute2: É um diretório etc. . . . Outro exemplo, pra alterar o tamanho da caixa postal no uebmiau, sabendo que a variavel é quota_limit e deve estar em algum arquivo no diretório abaixo de: /srv/www/default/html/, então basta executar: grep "quota_limit" -r /srv/www/default/html/ veja mais sobre o grep no arquivo grep.txt neste diretório (site). ************************************************* O comando find --------------------------------------------------------------------- O comando find é extremamente poderoso e flexível para descobrir arquivos que atendem a determinadas especificações. Por exemplo, suponhamos que queiramos descobrir todos os arquivos que não possuem dono em nosso sistema. Esta situação é extremamente comum, visto que usuários são criados e apagados diariamente e ficam vagando pelo sistema e podem eventualmente vir a comprometer a segurança. O comando find / -nouser -print irá gerar uma listagem com todos os arquivos do sistema que não pertencem a ninguém. Caso queiramos simplesmente apagar estes arquivos (não recomendável!!!) basta redirecionar a saída deste comando para o comando xargs, da seguinte forma: find / -nouser -print | xargs rm O mais recomendável é gerar um backup destes arquivos, para em seguida apagá-los: find . -cpio /dev/rmt0 -nouser Para restaurar estes arquivos cpio -idmv < /dev/rmt0 O comando cpio, a exemplo do comando find, é extremamente poderoso e flexível. Para maiores informações sobre seu uso e sintaxe, consulte as man pages (ou as próximas dicas :) ********************************************************************************* Procurando arquivos: Para localizar arquivos em seu disco rígido você pode usar um eficiente utilitário de pesquisa chamado find. Veja alguns exemplos: find /usr -name nome.ext -> Procura o arquivo nome.ext a partir do diretório /usr. find / -group casa -name nome.ext -> Procura pelo arquivo nome.ext que pertença ao grupo casa em todos os sistemas montados. find ~ -perm -100 -> Procura por todos os arquivos que tenham permissão de execução pelo proprietário no diretório home. find ~joao \! -name "*.gif" -> Procura no diretório home do usuário joao todos os arquivos que não tenham a extensão .gif. find . -mtime 2 -> Procura no diretório atual todos os arquivos que foram modificados há no máximo 2 dias. find / \( -group casa -o -user joao \) -print -> Procura por todos os arquivos que sejam do usuário joao ou do grupo casa em todos os sistemas montados. find / -name *nome_do_arquivo* ********************************************************************************* > Como posso fazer para listar (ls) os arquivos maiores que o arquivo tal. > > Ex.: > listar somente os arquivos maiores que o arquivo log49009.rdo (ou seja, > listar os log49010.rdo, log49011...etc...) > > Eu quero copiar para uma outra área os arquivos de log que são gerados a > cada momento pelo oracle. O que você quer dizer por "maior"? Se for tamanho de arquivo, é uma coisa, se for ordem do nome é outra. Bom, se for por tamanho de arquivo este era um probleminha interessante. Aqui está uma possível resposta: find . \ -size +`\ls -1ds | tr -s " " | cut -d" " -f2`k \ -exec cp \{\} \; Substitua pelo arquivo que é menor que os outros que você quer copiar, pela diretório para onde quer copiar eles. Se o seu problema for por ordem de nomes de arquivos, assumindo que eles são criatos na ordem, você pode fazer o mesmo tipo de coisa detetando as datas em vez dos tamanhos. Outra alternativa é um tar incremental. Se está curioso para saber como sabemos estas coisas loucas, a resposta é que não sabemos, inventamos na hora. Para entender como, leia os mans dos programas find, ls, tr, cut, cp, tar, bash ou tcsh, etc, etc, etc... Ou faça algum curso de Linux!... |:-) ********************************************************************************* > > Tente um comando find + script assim : > > find $1 -exec Procura.sh {} $2 ; Existe outra forma de fazer o mesmo. Primeiro, você pode especificar para o find para não sair dos limites do filesystem (/proc é outro filesystem, separado do filesystem normal), usando a opção -mount: find / -mount -file arquivo Outra forma é dizer para o find que, além do nome combinar, também o tipo deve ser 'arquivo' (não pode ser diretório, link, ou qualquer outra coisa, apenas um arquivo normal), usando a opção -type find / -type f -file arquivo Se o find ainda responde com mensagens de erro, podes jogá-las no lixo usando a redireção de stderr para /dev/null: find / -type f -file arquivo 2>/dev/null ********************************************************************************* use a dupla updatedb e locate. O updatedb (basta rodar ele no prompt) cria uma lista dos seus arquivos e diretorios e guarda. O locate usa a lista criada pelo updatedb e mostra onde encontrar o arquivo. Agende o updatedb para rodar uma vez por semana, por exemplo, para ter a lista sempre atual. O locate se usa assim: "locate conf" (sem aspas) vai retornar todos os arquivos que contem a string conf, e sua localização. Caso voce queira filtrar mais a saida, usa o "grep", assim: "locate conf | grep lalala" (sem aspas) vai retornar todos os arquivos que contem a string conf e tambem a string lalala. > Assunto: (linux-br) Procurando no HD Inteiro .... > > Pessoal, existe algum comando que eu possa dar e ele vasculhe todos os > dirs > para procurar um arquivo ????? ********************************************************************************* > Pessoal, existe algum comando que eu possa dar e ele vasculhe todos os dirs > para procurar um arquivo ????? Comando: # cd / # find . -name Alternativa: Utilize o comando 'locate' (pacote slocate.....rpm) Eh mais rapido, mas tem que rodar 'updatedb' antes (somente uma vez, ou periodicamente, uma vez por semana, por exemplo) ********************************************************************************* > Pessoal, existe algum comando que eu possa dar e ele vasculhe todos os dirs > para procurar um arquivo ????? > find / -print | grep -i "nomedoarquivoprocurado" ********************************************************************************* > Assunto: (linux-br) Procurando no HD Inteiro .... > find / -name *nome_do_arquivo* Se vc quiser usar os metacaracteres ? e *, coloque o nome entre aspas, assim: find / -name "*.txt" Sem as aspas pode nao funcionar, ou funcionar incorretamente pois o Bash expande os metacaracteres antes de executar o find. ********************************************************************************* Localização de Arquivos Grandes --------------------------------------------------------------------- Se o espaço em disco anda apertado em seu sistema Unix, para descobrir os culpados os seguintes comandos podem ajudar: find . -size +1024 | xargs ls -s | sort -nr | head -n 20 Temos aqui quatro comandos encadeados. Primeiro descobrimos os arquivos maiores que 1MB e em seguida listamos seu tamanho (ls -s). O comando xargs pega a saída do comando find com a lista dos arquivos maiores que 1MB e invoca o comando ls, com a flag "-s". O comando ls, invocado desta forma, exibe o tamanho do arquivo seguido de seu nome. Em seguida fazemos uma ordenação numérica reversa, onde os arquivos maiores aparecem primeiro, e da listagem resultante pegamos apenas os vinte primeiros nomes (head -n 20). Este comando foi executado em um sistema Solaris. Outros sistemas podem reagir de forma diferente. :-) Consulte a documentação dos comandos mencionados para ver se funcionam da mesma forma em seu sistema. A seguir reproduzo o resultado gerado sobre o conteúdo da Dicas-L: % find . -size +1024 | xargs ls -s | sort -nr | head -n 20 7184 ./dicas-l/dicas-l.zip 6640 ./linux/gas.pdf 6576 ./linux/cl-manual.pdf 5600 ./linux/manual-cl.ps.gz Localização de Arquivos Grandes --------------------------------------------------------------------- Com relação a mensagem sobre os arquivos grandes, eu recebi algumas idéias interessantes, que estou retransmitindo. Como diz o Larry Wall, criador do Perl, "there is more than one way of doing it". A primeira delas me foi enviada pelo Fernando Roxo, da Conectiva . Leiam com atenção pois ele aborda alguns conceitos muito interessantes e certamente bastante úteis que podem ser usados em outros contextos. --------------------------------------------------------------------- > --------------------------------------------------------------------- > Se o espaço em disco anda apertado em seu sistema Unix, para > descobrir os culpados os seguintes comandos podem ajudar: > > find . -size +1024 | xargs ls -s | sort -nr | head -n 20 Uma pequena modificação poderia ser : find . -size +1024 -exec ls -s {} \; | sort -nr | head -n 20 Esta forma usa a possibilidade do 'find' executar um comando a cada arquivo encontrado, neste caso o comando 'ls -s'. Alguém poderia questionar o fato de se estar invocando o comando 'ls' a cada novo arquivo encontrado, em lugar de um único evento como na sugestão apresentada. Neste caso estou me aproveitando do fato de o Linux/ Unixes fazerem um cache dos códigos recentemente executados, por isto depois da primeira invocação do 'ls' o sistema apenas executará a cópia que já está na memória, sem perdas maiores. No caso do 'GNU find', presente no Linux e nos Free*nixes, pode-se ainda usar uma outra opção : find . -size +1024 -printf "%k %h/%f\n" | sort -nr | head -20 A opção "-printf" é bastante poderosa e flexível, para maiores informações "man find". Neste caso específico o símbolo "%k" será substituido pelo tamanho do arquivo em blocos de 1024 bytes ( K Bytes ). O símbolo "%h" corresponde ao 'dirname' ( ver "man dirname" ) do arquivo, e o símbolo "%f" ao 'basename' ( ver "man basename" ;)). Para efeito de formatação pode-se usar a forma : find . -size +1024 -printf "%8k %h/%f\n" | sort -nr | head -20 Que força um campo de 8 caracteres para o tamanho do arquivo. --------------------------------------------------------------- ********************************************************************************* find / -name "*.txt" -exec grep -i "escreva sua frase" {} \; Subject: (linux-br) Localizar arquivo contendo texto especificado > Gostaria de saber como se faz para localizar arquivos que contem uma > determinada frase. > OU grep "procure essa frase" -r /* o -r é de recursivo.. /* significa apartir da raiz.. mais info em man grep ********************************************************************************* find - localizar arquivos com características especificadas. find / -name "nome.arquivo" - print. O comando find é uma ferramenta poderosíssima dentro do ambiente UNIX. Por meio deste comando pudesse copiar, encontrar, executar e modificar arquivos. Sua função exata é satisfazer a expressão boleana da linha de comando. A busca sempre inicia do diretório de partida especificado. Ex: find / -name jacareh -print Aqui se procura desde a raiz todos os arquivos com o nome "jacaré" ecoando na tela com o -print.Podemos usar meta-caracteres para especificar um arquivo sem problema algum. find / -name jacareh -exec cp {} ~/ \; Aqui ele procura o jacaré só que executa a ordem de copiar todos os arquivos "jacareh" encontrados para dentro do diretório $/HOME ou ~/ Você pode usar infinitos parâmetros com ele, de uma consultada no manual do find e divirta-se com as possibilidades. ********************************************************************************* De: dicas-l-owner@unicamp.br Assunto: [Dicas-L] find para achar/salvar links simbólicos Data: 28 Aug 2002 00:13:39 -0300 -------------------------------------------------------------------- Endereço: http://www.Dicas-l.com.br/dicas-l/20020828.shtml -------------------------------------------------------------------- Read in English Uma Maneira Divertida de Aprender Inglês http://novateceditora.com.br/livros/readinenglish/ -------------------------------------------------------------------- find para achar/salvar links simbólicos Colaboração: # aurelio marinho jargas Às vezes por causa de algum 'cp' descuidado, copia-se apenas os arquivos e ficam faltando os links simbólicos. ou ainda, como saber quais são os links simbólicos de um determinado diretório e para onde eles apontam. a resposta é mais simples do que se imagina: find. assim como "-type d" procura apenas por diretórios, o find possui a opção "-type l" para procurar links simbólicos. então já sabemos como encontrar quais são os links. resta saber para onde eles apontam. o find do GNU possui a opção -printf, que possui vários % que são úteis, alguns exemplos: %k tamanho do arquivo em Kbytes %p nome completo do arquivo (dirname+basename) %f nome do arquivo (basename) %h nome do diretório (dirname) %m permissões do arquivo %l destino do link simbólico "man find" tem todos os outros. então para saber quais são os links simbólicos de um diretório e para onde eles apontam, basta um: prompt$ find /etc -type l -printf "%p -> %l\n" /etc/sysconfig/network-scripts/ifdown -> ../../../sbin/ifdown /etc/sysconfig/network-scripts/ifup -> ../../../sbin/ifup /etc/versão-conectiva -> conectiva-release /etc/rc.d/init.d/smb -> /usr/sbin/samba /etc/rc.d/init.d/linuxconf-setup -> /usr/lib/linuxconf/conectiva/scripts/S99linuxconf /etc/rc.d/rc0.d/S00killall -> ../init.d/killall /etc/rc.d/rc0.d/S01halt -> ../init.d/halt /etc/rc.d/rc0.d/K80random -> ../init.d/random /etc/rc.d/rc0.d/K75netfs -> ../init.d/netfs /etc/rc.d/rc0.d/K90network -> ../init.d/network ...[e continua] abusando só um pouquinho dessa poderosa possibilidade, podemos "salvar" o estado atual dos links simbólicos, gerando um script para reconstruí-los caso necessário: #!/bin/sh # ln-save - gera um script de reconstrução de symlinks echo 'OLDPWD=$PWD' find "${1:-.}" -type l \ -printf "echo %l; cd %h; ln -s %l %f; cd \$OLDPWD\n" exemplo de uso: prompt$ cd /etc ; ln-save > /tmp/reconstroi-links.sh prompt$ cd /etc-novo ; sh /tmp/reconstroi-links.sh http://verde666.org ********************************************************************************* De: Edgard Lemos Responder-a: edgard@edconsultoria.com.br Para: linux-br@bazar.conectiva.com.br Assunto: (linux-br) Fwd: Re: (linux-br) [OFF-TOPIC] Script Shell Data: 20 Sep 2002 15:45:34 -0300 > > O que tebtei fazer foi o seguinte: listar num diretorio todos os > > arquivos e ver se tem algum *.html, caso exista ele printa na tela > > OK, caso contrario NADA, mas nao estou conseguindo fazer isso > > funcionar, alguem poderia dar uma luz? Ae, segue um script que desenvolvi especialmente pra ocasião: #!/bin/bash find ./ -name *.html >/tmp/059483721.tmp if cat /tmp/059483721.tmp | grep 'html' ; then echo "OK" cat /tmp/059483721.tmp |mail -s "Lista de Arquivos encontrados em $(date +%T)" edgard@edconsultoria.com.br else echo "NADA" fi Obs.: Caso num queira que te envie um email informando basta comentar a linha referente. De: Jorge Godoy Para: edgard@edconsultoria.com.br Cc: linux-br@bazar.conectiva.com.br Assunto: Re: (linux-br) Fwd: Re: (linux-br) [OFF-TOPIC] Script Shell Data: 20 Sep 2002 22:33:05 -0300 Edgard Lemos writes: > #!/bin/bash > find ./ -name *.html >/tmp/059483721.tmp ^^^^^^^^^^^^^^^^^^ use mktemp. -- Godoy. ********************************************************************************* De: Edgard Lemos Responder-a: edgard@edconsultoria.com.br Para: saijo , linux-br Cc: linuxall Assunto: Re: (linux-br) [OFF-TOPIC] Script Shell Data: 18 Sep 2002 21:54:38 -0300 Em Wednesday 18 September 2002 19:10, saijo escreveu: > Salve galera! > Desculpem o meu OFF-TOPIC, mas estou comecando a desenvolver uns > scripts shell e estou tendo alguns probleminhas. > Meu script teste: > > --------------------------------------- > #!/usr/local/bin/bash > > FILES=`find ./ -name "*.*"` > if ["$FILES" -eq "*.html"]; > then > echo "OK" > else > echo "NADA" > fi > --------------------------------------- > > O que tebtei fazer foi o seguinte: listar num diretorio todos os > arquivos e ver se tem algum *.html, caso exista ele printa na tela > OK, caso contrario NADA, mas nao estou conseguindo fazer isso > funcionar, alguem poderia dar uma luz? > Grato Que tal: --------------------------------------- #!/bin/sh if find ./ -name "*.html" >/dev/null; then echo "OK" else echo "NADA" fi --------------------------------------- Dá ainda para inserir uma passagem de parâmetros para escolher o diretório. -- Edgard Lemos ********************************************************************************* De: Thiago Madeira de Lima Para: 'Cássio' , 'Lista linux Br' Assunto: RE: (linux-br) Perguntas básicas!!! Data: 14 Oct 2002 22:52:26 -0300 Cassio, Para procurar um arquivo voce deve utilizar o comando find e nao o LS. O LS e' otimo para ver o conteudo dos diretorios, mas para fazer procuras o melhor e' utilizar o find mesmo. Para procurar um arquivo no HD find / -name nomedoarquivo.foo -type f Ai ele vai te retornar o path e o nome do arquivo. Para apagar o mesmo rm -fv nomedoarq.foo Se quizer unir os 2 (nao recomendo isso pra iniciantes) find / -name nomedoarqui.foo -type f -exec rm -iv {} \; Pra vc saber como funciona o find : find DIRETORIO_A_SER_UTILIZADO_COMO_BASE -name NOME_DO_ARQUIVO -type f (-type f procura somente arquivos (files) ) thiago madeira de lima. ********************************************************************************* ********************************************************************************* De: Arnaldo Carvalho de Melo Para: Hadad Cc: linux-br@bazar.conectiva.com.br Assunto: Re: (linux-br) Find para buscar UID Data: 06 Dec 2002 06:57:50 -0200 Em Fri, Dec 06, 2002 at 12:34:15AM -0300, Hadad escreveu: > oi! alguem sabe como usar o find para buscar arquivos que pertencam a > alguns UIDs? > eu uso o comando: find / -uid 5444 por exemplo pra listar todos os > arquivos pertencentes ao UID 5444 find / -uid 5444 -o -uid 5445 -o -uid 5446 - Arnaldo ********************************************************************************* De: Anderson Lizardo Para: Hadad Cc: linux-br@bazar.conectiva.com.br Assunto: Re: (linux-br) Find para buscar UID Data: 06 Dec 2002 20:34:24 -0400 Em Sex, 06 Dez 2002 00:34:15 -0300, Hadad escreveu: > (...) > mas e pra procurar arquivos que pertencam aos uids 5444 ate o 5666 por > exemplo? nao sei se deu pra sacar, mas seria algo como fazer isso: > > find / -uid 5400 > find / -uid 5401 > find / -uid 5402 > find / -uid 5403 > até o find / -uid 5666 # Do UID 5444 até 5666 find / -uid +5443 -uid -5667 Para mais informações: $ man find ************************************************************************* Basename/Dirname Dois comandos que permitem a manipulacao de nomes e caminhos de arquivos dentro de sistemas Unix sao os comandos "basename" e "dirname". O comando basename ira retirar o ultimo nome apos o ultimo "/" como exemplificado abaixo: % basename /usr/local/bin/gzip gzip Ou seja, este comando pode ser utilizado para extrair apenas o nome de um arquivo a partir do caminho completo, neste caso, o nome gzip. Ja o comando dirname retorna como resultado o caminho inteiro fornecido a excecao do ultimo nome, como exemplificado abaixo: % dirname /usr/local/bin/gzip /usr/local/bin ************************************************************************* De: Waldirio M. Pinheiro Para: 'Marcelo Marra Assis' , 'linux-br' Assunto: RES: (linux-br) Procurar string dentro de arquivo Data: 02 Jul 2003 10:46:33 -0300 Boa Noite Você pode utilizar o seguinte Server# find . -exec grep -l String_que_desejar {} \; ou Server# find . -exec grep -l "String_que_desejar" {} \; Atenciosamente Waldirio UIN - 43258570 > Gostaria de realizar um procura no linux da seguinte forma: > saber quais arquivos possui uma determinada string... ************************************************************************* De:  sedrez@tecgraf.puc-rio.br Para:  Edson Ahlert Cc:  linux-br Assunto:  RE: (linux-br)Como usar o comando Basename??? Data:  Wed, 16 Jul 2003 16:23:00 -0300 (BRT) On 16-Jul-2003 Edson Ahlert wrote: [...] > find /home/ -name "*.dcu" -exec rm {} \; > --------------------------------------------- > > O que quero é remover a extensão dos arquivos que ele retorna, tipo: > Se ele achar: > /home/usuario1/pasta_tal/arquivo.dcu > ...quero que ele apague também > /home/usuario1/pasta_tal/arquivo Rio de Janeiro, 16-Jul-2003 Isto você pode fazer com sed: find /home/ -name "*.dcu" | sed -e 's/\.dcu$//' | xargs -i% rm % Cuidados devem ser tomados com o "xargs" para o caso de arquivos que tenham espaço no nome; por isso o "%" no xargs. Uma maneira de evitar isto seria: find /home. -name "*.dcu" | sed -s 's/.dcu$//; s/.*/"&"/' | xargs rm É claro que poderiam haver casos de arquivos com " no nome, mas aí já é paranóia... ----- Paulo F. Sedrez ************************************************************************* De:  Edson Ahlert Responder-a:  Edson Ahlert Para:  linux-br Assunto:  (linux-br)Como usar o comando Basename??? Data:  Wed, 16 Jul 2003 09:24:44 -0300 Olá!!! Tenho um script que procura determinados tipos de arquivos, tipo *.dcu (criado pelo Kylix). --------------------------------------------- find /home/ -name "*.dcu" -exec rm {} \; --------------------------------------------- O que quero é remover a extensão dos arquivos que ele retorna, tipo: Se ele achar: /home/usuario1/pasta_tal/arquivo.dcu ...quero que ele apague também /home/usuario1/pasta_tal/arquivo Sei que o basename pode fazê-lo da seguinte forma: "basename arquivo.dcu .dcu". Isto removeria a extensão. Mas como faço para acrescentar isto ao script??? Se alguém puder me ajudar... +++++ --::    Edson Ahlert    ::-- Coordenador de Informática IECEG - Teutônia/RS edsonahlert@certel.com.br ************************************************************************* De:  Paulo Roberto Bagatini Para:  Marcelo Bihre , Luis Fernando Ferreira Filho , Linux-BR Assunto:  (linux-br)Copiando arquivos segundo uma regra e criando automaticamente os diretorios pais Data:  Mon, 21 Jul 2003 21:12:54 -0300 A partir de uma dica do Piter Punk,         http://www.piterpunk.hpg.ig.com.br/dicas.html#22 finalmente descobri como fazer o que diz o subject :-) Formato:  find [find_parms] | tar c[v]fT - - | tar x[v]f[p] - [-C ]  <>     obrigatorio  []     opcional Os parametros do find vao definir a regra. Se nenhum parametro for especificado, copia tudo. Mais informacoes: man find Parametros do tar:  c      cria  x      extrai  f      usa arquivo como archive  p      mantem as informacoes originais de permissao  v      verbose (lista os arquivos durante a operacao)  T   pega nomes do arquivo  C   muda para o diretorio . Se nao for usado, = . (dir local)  -      entrada/saida eh stdin/stdout Ex: copia de /opt/kde todos os arquivos .bmp e .wav que houverem para o     diretorio corrente.  find /opt/kde/ -name "*.bmp" -o -name "*.wav" | tar cfT - - | tar xf - -- ************************************************************************* De:  sedrez@tecgraf.puc-rio.br Para:  Peter Parker Cc:  linux-br Assunto:  RE: (linux-br)=?iso-8859-1?Q?_Espa=E7o?= em nome de arquivo e script Data:  Tue, 22 Jul 2003 15:55:42 -0300 (BRT) On 22-Jul-2003 Peter Parker wrote: > Estou tentando fazer um script, porém estou encontrando problemas no > nome dos arquivos que contenham espaços. > Este é meu script: > >#!/bin/bash > for arq in `ls *.mp3`; > do >      mpg123 -vsw $arq'.wav' $arq; > done Rio de Janeiro, 22-Jul-2003 Em bash, você não precisa se preocupar que a expansão de * separe os elementos; a saida do ls, entretanto, certamente irá separar. Use: for arq in *.mp3 ; sem medo. Solução 2: use find.         find . -type f -name "*.mp3" -maxdepth 1 -print0 | \                 xargs -0 -i% mpg123 -vsw %.wav % ----- Paulo F. Sedrez Diretor Presidente ************************************************************************* De:  Samoied Para:  linux-br@bazar2.conectiva.com.br Assunto:  Re: (linux-br) Espaço em nome de arquivo e script Data:  Tue, 22 Jul 2003 09:56:17 -0300 Sugiro a vc usar o find para este trabalho: #!/bin/bash find . -name \*.mp3 -exec mpg123 -vsw {}.wav {} \; Caso d=EA erro tente trocar \*.mp3 por *.mp3 , pois isso muda de distro pra distro. ************************************************************************* De:  zgrp unknow Para:  linux-br@bazar2.conectiva.com.br Assunto:  (linux-br)re: localizando arquivos rapidamente Data:  Thu, 24 Jul 2003 12:32:11 -0300 (ART) OI, Utilize o locate, dessa forma: locate "nome_do_arquivo_q_vc_procura" Nao se esqueca de reconstruir sempre a base de dados.... com o comando: updatedb :) T+ [ ]'s ************************************************************************* De:  Adilson - Solucao Linux / Software - Servidores Para:  linux-br@bazar2.conectiva.com.br Assunto:  Re: (linux-br)Localizar e entrar Data:  Mon, 18 Aug 2003 11:08:06 -0300 Em Qua 13 Ago 2003 20:27, Anderson Lizardo escreveu: > Em Segunda, 11 de Agosto de 2003 18:04, Lista escreveu: > > Estou fazendo o seguinte mais nao funciona com o cd. > > find -iname diretorio -exec cd {}\; > > Se eu uso o rm o comando acima funciona. > > Uma curiosidade: para quê você desejaria entrar em cada diretório > encontrado pelo find? Também fiquei curioso, porque você quer apenas entrar no diretorio ???? Você quer executar apenas um "cd" para o diretório ou executar algum script para cada diretório encontrado ??? Eu uso algo parecido para executar um "grep" dentro de vários diretórios assim: find /home -exec grep -i  {} "string_procurada" \; dentro de um scriptzinho. -- um abraço Adilson. ================================= All powered by Solucao Linux WWW.SOLUCAOLINUX.COM.BR visite nossa página e veja um SOFTWARE GERENCIAL para empresas totalmente nativo linux. ************************************************************************* De:  Dicas-L-Owner@unicamp.br Assunto:  [Dicas-L] Mais usos do comando find Data:  Tue, 02 Sep 2003 02:40:41 -0300 -------------------------------------------------------------------- Endereço: http://www.Dicas-l.com.br/dicas-l/20030902.shtml -------------------------------------------------------------------- Estratégias de Desenvolvimento de Projetos Educacionais a Distância                       Mediados por Computador            Faculdade de Engenharia Química da UNICAMP     http://www.extecamp.unicamp.br/dadosdist.asp?sigla=FEQ-118                   Inscrições até o dia 05/09/2003 --------------------------------------------------------------------   Mais usos do comando find   ========================= Em sistemas *nix, uma ferramenta de enorme funcionalidade é o comando find. O comando find aceita diversas diretivas que lhe instruem sobre o que pesquisar em um sistema de arquivos. Arquivos maiores que um tamanho pré-determinado, que tenham sido modificados ou acessados até determinada data, etc. Vamos então ver uma forma pouco usada, mas que pode ter sua utilidade. Eu criei em um diretório um arquivo estranho. Deu um trabalho para criar o arquivo, pois ele continha uma marca de tabulação em seu nome.   $ ls   a  ?a  b  c  d  e   $ ls | cat -v   a           a   b   c   d   e Bom, agora eu quero remover este arquivo. Existem várias maneiras de se fazer isto, mas eu quero demonstrar uma que use o recurso do comando find que eu quero demonstrar. Quem sabe um dia alguém ache um exemplo mais inteligente :-)   $ ls -i   3358935 a  3358929 ?a  3358930 b  3358931 c  3358932 d  3358933 e O comando ls irá exibir os i-nodes (index nodes) dos arquivos que são informações. i-nodes são estruturas de dados que indicam ao sistema operacional a localização física dos arquivos. De posse desta informação, eu posso fazer:   find . -inum 3358929 -ok rm '{}' \; O parâmetro "-ok" é uma verificação de segurança para garantir que nada saia errado. Ele vai buscar o arquivo cujo i-node seja igual a 3358929 e removê-lo. Caso eu tenha certeza absoluta do que estou fazendo uma alternativa é usar a diretiva "-exec", que executa o comando diretamente:   find . -inum 3358929 -exec rm '{}' \; A Dicas-L já publicou mais algumas dicas sobre o comando find. Veja também: - find para achar/salvar links simbólicos (http://www.dicas-l.com.br/dicas-l/20021017.shtml) - O Comando Find (http://www.dicas-l.com.br/dicas-l/19970303.shtml) --------------------------------------------------------------------                 Instalando modem PcTel HSP56 AMR no Linux http://www.linuxdicas.com.br/modules.php?name=Sections&op=viewarticle&artid=20 ------------------------------------------------------------------------------- As mensagens da lista Dicas-L são veiculadas diariamente para 22485 assinantes.        Todas as mensagens da Dicas-L ficam armazenadas em                http://www.Dicas-l.com.br. A redistribuição desta e outras mensagens da lista Dicas-L pode ser feita livremente, deste que o conteúdo, inclusive esta nota, não sejam modificados. --------------------------------------------------------------- ************************************************************************* De:  Paulo Roberto Bagatini Para:  Diniz Alexandre Daminelli Cc:  linux-br@bazar2.conectiva.com.br Assunto:  Re: (linux-br)Somente arquivos Data:  Tue, 26 Aug 2003 23:17:20 -0300 Diniz Alexandre Daminelli said the following on 08/26/03 21:08: gostaria de listar somente os arquivos do diretorio, sem que me  fosse > mostrado om caminho completo do diretorio, exemplo: > > Ao dar um ls, ou algum comando semelhante, em /var/spool/mail, gostaria que > mostra-se somente os arquivos da pasta, deste modo: > carlos > joao > maria > pedro > > e não deste modo: > /var/spool/mail/carlos > /var/spool/mail/joao > /var/spool/mail/maria > /var/spool/mail/pedro > > Digo isto porque possuo um script e desejo jogar para a variavel somente os > nomes, sem passar para a variavel o caminho todo. > > Alguem sabe como realizar esta tarefa? > find -type f -exec basename {} \; | sort find -type f -maxdepth 1 -exec basename {} \; | sort -- ************************************************************************* De:  Dicas-L-Owner@unicamp.br Assunto:  [Dicas-L] Dicas de utilizacao do Find Data:  Wed, 03 Dec 2003 02:43:51 -0200 -------------------------------------------------------------------- Endereço: http://www.Dicas-l.com.br/dicas-l/20031203.shtml --------------------------------------------------------------------                              Portal Linux IBM                           http://www.ibm.com/linux ----------------------------------------------------------------------   Dicas de utilizacao do Find   =========================== Colaboração: Angelo Roberto Bonfieti Junior O comando find eh extremamente util para procurar arquivos que obedecam a um criterio particular. O find pode procurar arquivos que foram modificados nos ultimos X dias, arquivos maiores que um tamanho especifico ou arquivos que pertencam a um userid que nao esta definido no seu arquivo /etc/passwd, por exemplo, sao exemplos de situacoes faceis de serem resolvidas pelo comando find (e muito uteis, tambem). Voce tambem pode procurar arquivos de tipos especificos - como diretorios, links simbolicos ou arquivos normais - ou arquivos mais novos que um outro arquivo. Voce pode procurar arquivos baseando-se em suas permissoes (por exemplo, todos os arquivos que possuem o bit setuid). Voce pode restringir comandos find a um diretorio especifico ou a file-systems. O que pode nao ser tao obvio quanto a construcao do comando find apropriado para fazer o servico de vasculha que voce procura eh como construir um comando que ira fazer o que voce quer com os arquivos, uma vez que voce os tenha encontrado.   -print e -ls Os dois comandos mais comuns usados com find sao, nao surpreendentemente, o -print e o -ls. A opcao -print imprime o nome do arquivo do ponto de vista do diretorio corrente (ex. /export/home/teste/tralha.txt ou somente ./teste/tralha.txt se a procura foi iniciada a partir do /export/home). A opcao -ls proporciona o mesmo tipo de informacao que voce iria ver se voce visalizasse os arquivos atraves do comando ls -li.   -exec A opcao -exec eh indubitavelmente a proxima opcao mais popular e eh usada para especificar o que o find ira fazer com os arquivos que ele encontrar. Quando usamos a opcao -exec, o nome de cada arquivo encontrado pelo find eh representado no comando find pela sequencia de caracteres "{}" (sem as aspas ;-] ). O comando para imprimir o numero de linhas em cada um dos arquivos encontrados pelo find ira se parecer com isso:   root>> find . -type f -exec wc -l {} \; A sequencia \; marca o fim do comando e, executando-o, voce poderia ter, como resultado, algo como: ---      74 ./030701_log.txt      12 ./testfile1       6 ./testfile2       5 ./ex --- O comando para procurar por strings (sequencias) especificas e imprimir as strings e os nomes dos arquivos nas quais elas foram encontradas irao se parecer com:   find . -type f -exec grep "antes" {} \; -print O -print neste comando eh colocado no final para que os arquivos mostrados sejam somente os que passaram pelo teste do grep.         Alterando Arquivos com o Find         ============================= Para modificar o conteudo de arquivos que sao localizados pelo find, voce pode usar o sed ou voce pode usar ainda um comando Perl como este que eh executado em todos os arquivos HTML no diretorio corrente e subdiretorios para alterar uma URL para outra:   find . -type f -name "*\.html" -exec perl -i -p -e \     's/www.antes.org/www.depois.com/g;' {} \; Se voce frequentemente tem que mudar links em um website muito grande, um comando como esse certamente ira livrar muito tempo (e trabalho). Se voce quer dar este comando a alguem que nao ira gostar de lembrar do comando find, voce pode coloca-lo num script como esse: --- #!/bin/bash if [ $# != 2 ]; then     echo "usage $0 "     exit else     ANTES=$1     DEPOIS=$2 fi find . -type f -name "*\.html" -exec perl -i -p -e \   "s/$ANTES/$DEPOIS/g;" {} \; ---         Fazendo Muita Coisa com Arquivos Alterados         ========================================== Se voce quer executar um numero de comandos em cada arquivo que voce encontrar, existe um meio de faze-lo tambem - e isso nao requer a utilizacao da opcao -exec. Ao contrario, redirecione (com pipe) a saida do seu comando find normal para um repetidor while como este e voce pode executar quantos comandos desejar entre os marcadores do e done:   find . -type f | while read i   do       file $i       ls -i $i       wc -l $i   done Neste loop o nome do seu arquivo eh associado ao $i. Este comando trabalha com shells da familia Bourne Shell (sh, ksh, bash e outros). Muito trabalho pode ser realizado com uma combinacao inteligente do comando find. Algumas ideias deste artigo foram fornecidas por Robert D. e Chang A. Este texto foi traduzido integralmente do Original veiculado no forum "Unix in the Enterprise" sob titulo "Tricks with find" da revista eletronica ITworld (www.itworld.com) no dia 17/07/2003. -------------------------------------------------------------------- XHTML - Guia de Consulta Rápida http://novateceditora.com.br/guias/xhtml/ -------------------------------------------------------------------- As mensagens da lista Dicas-L são veiculadas diariamente para 23257 assinantes.        Todas as mensagens da Dicas-L ficam armazenadas em                http://www.Dicas-l.com.br. A redistribuição desta e outras mensagens da lista Dicas-L pode ser feita livremente, deste que o conteúdo, inclusive esta nota, não sejam modificados. --------------------------------------------------------------- ************************************************************************* LOCATE De:  Massahide Para:  linux-br@bazar2.conectiva.com.br Assunto:  Re: (linux-br)Comando locate Data:  Sat, 7 Feb 2004 20:22:58 -0300         Creio que suas buscas não serão armazenadas em lugar algum. O diretório que o locate procura depende da configuração que vc fizer, mas o padrão é buscar no sistema todo (na raiz). É só usar locate + a string que vc quer procurar; se o banco de dados de seu locate estiver desatua- lizado ele lhe mostrará uma mensagem, aí é só usar locate -u para reatu- alizá-lo (dependendo do sitema demora d+...). Em Qua, 04 de fevereiro de 2004 às 08:54 BRT alexandregms escreveu: > Olá lista...é bem básico, mas vamos lá...é perguiça de ler o "man > locate" No comando locate onde ficam amazenadas as buscas que fazemos? > > Posso localizar geral ou devo especificar o diretório, por exemplo se > quero saber de um tal arquivo no diretório /etc há possibilidade de > dar um locate na raíz? > O que vier é lucro, agradeço a todos. ************************************************************************* De:  Thiago Macieira Para:  linux-br@bazar2.conectiva.com.br Assunto:  Re: (linux-br)Como procurar um arquivo muito especial ? Data:  Tue, 27 Jul 2004 18:09:16 -0300 -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Sérgio Pinheiro wrote: >find /mnt/cdrom -name '*.rpm' - exec {algo que procure o arquivo > abc.bin dentro de cada rpm e liste apenas os rpm que contém o arquivo > abc.bin} Sem testar: find /mnt/cdrom -name '*.rpm' | \ while read package; do         if rpm -qlp $package | grep -q 'abc.bin' 2>/dev/null; then                 echo $package         fi done - --   Thiago Macieira  -  Registered Linux user #65028    thiago (AT) macieira (DOT) info     ICQ UIN: 1967141   PGP/GPG: 0x6EF45358; fingerprint: ************************************************************************* De:  Frederico Vaz Para:  'Sérgio Pinheiro' , linux-br@bazar2.conectiva.com.br Assunto:  RES: (linux-br)Como procurar um arquivo muito especial ? Data:  Tue, 27 Jul 2004 21:56:07 -0300 Sérgio Pinheiro escreveu em: terça-feira, 27 de julho de 2004 12:47 > Tenho vários CD´s de rpm´s, pensei que algum dos colegas poderia me ajudar > a montar um comando assim: > find /mnt/cdrom -name '*.rpm' - exec {algo que procure o arquivo abc.bin > dentro de cada rpm e liste apenas os rpm que contém o arquivo abc.bin} Tenta assim: find ./ -print -exec rpm -qpl {} \; | less ai, vc faz a pesquisa na saída do less /abc.bin Desta forma vc saberá em que pacote rpm está contido o arquivo. Frederico Vaz ************************************************************************* De:  Artur Coutinho Para:  linux-br@bazar2.conectiva.com.br Assunto:  Re: (linux-br)Como procurar um arquivo muito especial ? Data:  Wed, 28 Jul 2004 22:39:48 -0300 Em Ter 27 Jul 2004 12:47, Sérgio Pinheiro escreveu: > Olá novamente caros colegas. > > Vamos supor que eu queira localizar um arquivo chamado abc.bin, isso é > fácil. O problema é que ele está dentro de um rpm. > > Jóia, é só localizar o rpm e pronto. Beleza, só que eu não sei qual é o > rpm. > > Tenho vários CD´s de rpm´s, pensei que algum dos colegas poderia me ajudar > a montar um comando assim: > > find /mnt/cdrom -name '*.rpm' - exec {algo que procure o arquivo abc.bin > dentro de cada rpm e liste apenas os rpm que contém o arquivo abc.bin} > > É um comando complicado pois envolve mais de dois programas e pipes " | " e > estou atrapalhado com isso. Talvez uma combinação de find e rpm2cpio com > cpio, sei lá. Olá, Alguém da Conectiva me indicou esse script certa vez: #!/bin/sh #procura_arq.sh - procura no diretório corrente um certo arquivo [ "$1" = "" ] && echo "Uso: $0 arquivo-a-procurar" && exit 1 for a in `ls *.rpm`; do   rpm -qlp $a | grep -q $1 && echo " [33;01m$a: [00m" && rpm -qlp $a|grep $1 done Sds, -- Artur de Paula Coutinho - Santa Rita do Sapucai - MG www.meusitelinux.cjb.net - arturcoutinho@bol.com.br    Linux Registered User# 140972 - ICQ 59870067 ************************************************************************* De:  Thiago Macieira Para:  linux-br@bazar2.conectiva.com.br Cc:  Claudio Polegato Junior Assunto:  Re: (linux-br)Erro ao compilar zm-1.19.5 no CL10 Data:  Thu, 21 Oct 2004 21:25:23 -0300 -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Claudio Polegato Junior wrote: >Olá, > >  Não sei se entendi direito, mas o cpp deveria ser procurado em /usr/bin > e não em /lib como está abaixo. Creio que precise mudar alguma > configuração, passar algum parâmetro para o configure ou algo assim. Dê > uma olhada melhor. /lib/cpp está correto: $ v /lib/cpp lrwxrwxrwx  1 root root 12 2004-09-29 23:09 /lib/cpp -> /usr/bin/cpp Agora, /LIB/CPP está errado. Porém, a mensagem de erro indica que falta o cc1plus: >>configure:3934: /lib/cpp  conftest.cc >>cpp: installation problem, cannot exec `cc1plus': No such file or >>directory $ locate cc1plus /usr/libexec/gcc/i386-conectiva-linux/3.4.2/cc1plus $ rpm -qf /usr/libexec/gcc/i386-conectiva-linux/3.4.2/cc1plus g++-3.4.2-67517cl (Estou com o CL Snapshot; no CL10 é outra versão, mas ainda semelhante) Aparentemente, o cpp (C Pre Processor) nada mais é que uma fachada para os verdadeiros pré-processadores: cc1 e cc1plus. Esses dois são os compiladores -- o segundo passo. Veja a diferença de tamanho dos executáveis: $ v /usr/libexec/gcc/i386-conectiva-linux/3.4.2/cc1 {,plus} /usr/bin/{cpp,gcc} - -rwxr-xr-x  1 root root   84780 2004-09-09 22:29 /usr/bin/cpp - -rwxr-xr-x  3 root root   81164 2004-09-09 22:29 /usr/bin/gcc - -rwxr-xr-x  1 root root 3150188 2004-09-09 22:29 /usr/libexec/gcc/i386-conectiva-linux/3.4.2/cc1 - -rwxr-xr-x  1 root root 3558732 2004-09-09 22:29 /usr/libexec/gcc/i386-conectiva-linux/3.4.2/cc1plus - --   Thiago Macieira  -  Registered Linux user #65028    thiago (AT) macieira (DOT) info ************************************************************************* De:  Brunhara Para:  André Unno , Lista Linux-BR Assunto:  Re: (linux-br)Apagando arquivos via script. Data:  Fri, 26 Nov 2004 10:54:35 -0200 da um man no find exemplo vai apagar depois de 1000 minitos find /var/www/default/ftp/*.EXE  -cmin +1000 |xargs rm -rf ************************************************************************* De: Dicas-L-Owner@unicamp.br Assunto: [Dicas-L] O comando find: links órfãos Data: Fri, 25 Mar 2005 04:13:39 -0300 Aprendendo Java 2 http://novateceditora.com.br/livros/java2/ ----------------------------------------------------------- *** Treinamento Dextra Sistemas em Campinas e São Paulo *** 18/03 PostgreSQL: Linguagem Procedural PL/pgSQL Campinas 21/03 PostgreSQL: Administração de Banco de Dados Campinas 23/03 Jakarta Struts Essencial Campinas 31/03 Linux: Fundamentos Campinas http://www.dextra.com.br/treinamento/ ----------------------------------------------------------- O comando find: links órfãos ============================ Colaboração: Dalton M. C. Barreto Para descobrir links simbólicos que apontam para arquivos que não existem mais, use o comando find: find . -type l -follow 2>/dev/stdout | cut - d: -f 2 | xargs rm -f Isso dá conta do recado! Repare q o '2>/dev/stdout' pode ser substituido por 2>&1, mas eu acho o primeiro mais legivel! Isso se faz necessario pois o find, ao seguir um link quebrado escreve a mensagem da saida padrão de erro (stderr), por isso temos que redirecionar, para que o cut consiga pegar e passar pra frente. -------------------------------------------------------------------- Colabore com a Dicas-L. Publique seu comentário sobre esta mensagem em http://www.Dicas-l.com.br/dicas-l/20050325.php -------------------------------------------------------------------- As mensagens da lista Dicas-L são veiculadas diariamente para 26999 assinantes. Todas as mensagens da Dicas-L ficam armazenadas em http://www.Dicas-l.com.br/dicas-l/ A redistribuição desta e outras mensagens da lista Dicas-L pode ser feita livremente segundo a licença Creative Commons http://creativecommons.org/licenses/by-nc-sa/2.0/br/deed.pt -------------------------------------------------------------------- ************************************************************************* De: Alex Gazoli Para: linux-br@bazar2.conectiva.com.br Assunto: Re: (linux-br)arquivos mudados .. Data: Sat, 16 Apr 2005 18:50:50 -0300 (ART) --- LUIS CARLOS FIDALGO wrote: > Olá galera... > Gostaria de uma ajuda, para saber qual a forma que > eu posso usar para saber > todos os arquivos de um servidor que foram mudados > no dia de ontem ou > acessados, e se existe a possibilidade de se criar > um aquivo dizendo quais > foram os arquivos mudados ou acessados. > > Obrigado utilize o comando: $find / -atime 1 e $find / -ctime 1 Na dúvida, leia o man. ************************************************************************* De: Thiago Macieira Para: linux-br@bazar2.conectiva.com.br, LUIS CARLOS FIDALGO Assunto: Re: (linux-br)arquivos mudados .. Data: Sat, 16 Apr 2005 18:56:53 -0300 LUIS CARLOS FIDALGO wrote: >Olá galera... >Gostaria de uma ajuda, para saber qual a forma que eu posso usar para > saber todos os arquivos de um servidor que foram mudados no dia de > ontem ou acessados, e se existe a possibilidade de se criar um aquivo > dizendo quais foram os arquivos mudados ou acessados. Todos os arquivos modificados no último dia: find / -mtime -1 Todos os arquivos acessados nas últimas 24h: find / -atime -1 -- Thiago Macieira - thiago (AT) macieira (DOT) info PGP/GPG: 0x6EF45358; fingerprint: E067 918B B660 DBD1 105C 966C 33F5 F005 6EF4 5358 1. On frumscafte, hwonne time_t wæs náht, se scieppend þone circolwyrde wundorcræftlíge cennede and seo eorðe wæs idel and hit wæs gód. ************************************************************************* De: André Mariano Para: linux-br@bazar2.conectiva.com.br Assunto: Re: (linux-br)arquivos mudados .. Data: Sun, 17 Apr 2005 01:17:23 -0300 Olá Luiz Carlos Para descobrir os arquivos acessados nas últimas 24h, visualizando na tela e ao mesmo tempo armazenando em um arquivo txt: #find / -atime -1 -type f | tee lista-de-arquivos-acessados.txt Para descobrir os arquivos alterados nas últimas 24h, visualizando na tela e ao mesmo tempo armazenando em um arquivo txt: #find / -mtime -1 -type f | tee lista-de-arquivos-alterados.txt De: Thiago Macieira Para: linux-br@bazar2.conectiva.com.br, LUIS CARLOS FIDALGO Assunto: Re: Fw: (linux-br)arquivos mudados .. Data: Sun, 17 Apr 2005 18:34:45 -0300 LUIS CARLOS FIDALGO wrote: >Muito obrigado pela sua resposta, pois me ajudou bastante, e consegui >concluir que o arquivo foi mudado sim, mas ai vai uma pergunta, tem como > a gente saber quem alterou o arquivo, Não > ou saber até outras informaçoes > mais apuradas, qual é a melhor forma de deixar logando tudo o que > acontece na maquina de alteraçao de arquivos e que usuario alterou e > qual foi o meio de conexão que foi usada no acesso, desde deixar > logando todos arquivos da maquina, só deixar os diretórios que a gente > quer . Não tem isso. -- Thiago Macieira - thiago (AT) macieira (DOT) info ************************************************************************* De: Thiago Macieira Para: linux-br@bazar2.conectiva.com.br Cc: fabioran@click21.com.br Assunto: Re: (linux-br)Duvidas com msgs Data: Fri, 18 Mar 2005 02:14:24 -0300 fabioran@click21.com.br wrote: >Ultimamente tenho notado q alguns programas q utilizo funcionam, mas > emitem algumas msgs de advertencia sobre um tal "LOCATE", o q viria a > ser isso? Um programa q não instalei q é utilizado? Uma biblioteca ou > algo parecido com isso? locate é um programa usado para encontrar arquivos no seu sistema. Ao contrário do find, que procura na hora, o locate utiliza um banco de dados indexado. Por isso, ele é muito mais rápido, mas também suas informações podem estar desatualizadas de várias horas. Normalmente você roda o updatedb durante a noite para atualizar o índice. > Como eu poderia corrigir isso? Depende de qual é a mensagem de erro. Obviamente não é a que você postou abaixo. > Como saber se o meu programa tá funcionando corretamente? Isso pode > prejudicar em alguma coisa? Não dá para saber sem a mensagem de erro. > Alguns programas tipo o dillo web browser,licq e outros > vez por outra emitem uma das dias msgs abaixo: > >Warning: locale not supported by C library, locale unchanged Essa mensagem não tem nada a ver com o locate. Por favor, poste a mensagem de erro do locate para que possamos tentar descobrir qual é o problema. -- Thiago Macieira - thiago (AT) macieira (DOT) info ************************************************************************* De: Alejandro Flores Para: devair.linux Cc: linux-br Assunto: Re: (linux-br)MOntando o Script Data: Wed, 23 Nov 2005 23:25:17 -0300 Olá Devair, > Comecei a pesquisar para montar um script.... > O meu primeiro item sera procuar arquivos em diretorio e deleta-los.. > Entao eu achei este comando > find /ext/cnp/serrom/ -name rom* | date -d '3 months ago' +%d%m%Y -exec rm -fv {} \; Veja, você ja aprendeu sobre o uso do 'pipe ( | )' ? Nesse caso, o resultado do comando 'find /ext/cnp/serrom/ -name rom*' foi direcionado para o comando date -d '3 months ago' +%d%m%Y -exec rm -fv {} \;. Não faz sentido esse pipe ai. > aqui eu quero procurar todos os arquivos que estao no diretorio /ext/cnp/serrom que comecem com rom e que > tenha 3 meses atras de existencia e deleta-los mais não funcionou;;; find /ext/cnp/serrom/ -iname rom* -atime +90 -exec ls -l {} \; > /tmp/apagar Traduzindo: procure em /ext/cnp/serrom/ por nomes comecando com 'rom', ignore diferenças de maiuscula/minuscula cujo último acesso foi >= 90 dias (3 meses em diante) então execute ls -l. O > /tmp/apagar vai direcionar o resultado do comando find para o arquivo /tmp/apagar. Muito cuidado quando estiver testando os scripts. Colocar o 'rm -fv' sem ter segurança do que está fazendo pode ocasionar problemas sérios no seu SO. Direcionando a saída para um arquivo te da a possibilidade de verificar o que ele achou antes de apagar. Uma vez verificado o resultado da ação e garantido que não vai ter problemas, troca o ls -l pelo rm. -- Abraço! Alejandro Flores http://www.triforsec.com.br/ ************************************************************************* *************************************************************************