shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RES: RES: [shell-script] Copiar arquivo para as pastas


From: Julio Cezar Neves - DATAPREVRJ
Subject: RES: RES: [shell-script] Copiar arquivo para as pastas
Date: Wed, 14 Apr 2004 14:15:06 -0300

| -----Mensagem original-----
| De: Felipe Kellermann [mailto:address@hidden]
| Enviada em: quarta-feira, 14 de abril de 2004 13:42
| Para: address@hidden
| Assunto: Re: RES: [shell-script] Copiar arquivo para as pastas
| 
| 
| On Wed, 14 Apr 2004 12:13pm  -0300, Julio Cezar Neves - 
| DATAPREVRJ wrote:
| 
| > Aí Marcelo,
| > acho que a linha a seguir resolverá.
| >
| > find /home -type d -maxdepth 1 | xargs -i cp ./arq 
| /home/{}/arq 2>/dev/null
| 
| Fala Júlio.  Se me permite...  Só há um problema aqui:
| Essa substituição vai ficar `cp ./arq /home//home/usuário/arq''

Fala Felipe,
Vc tem razão e foi por isso que redirecionei a saída de erro. Não usei o
mindepth pq não tinha certeza se seria - mindepth 1 ou -mindepth 0 e como
estava escrevendo a linha direto no e-mail sem testar bateu uma prequiça de
ir ao man...

| Eu acho que ficaria melhor só fazer `cp .arq {}'.
| Também, há um outro problema:  Um dos alvos vai ser o próprio 
| `/home/', é
| necessário ainda especificar a altura mínima em 1, mindepth.  
| Juntando os
| dois, eu faria assim, no find:
| 
| $ find /home -type d -mindepth 1 -maxdepth 1 -exec echo cp ./arq {} \;

Veja esta observação tirada de Unix Power Tools, first edition (O'Reilly &
Associates):

The modern UNIX OS seems to have solved the problem of the find command
overflowing the command-line buffer. However, using the find -exec command
is still troublesome. It's better to do this: 
# remove all files with a txt extension
find . -type f -name "*.txt" -print|xargs rm
than this: 
find . -type f -name "*.txt" -exec rm {} \; -print

Por outro lado eu fiz um teste de performance com um grep recursivo, e com o
xargs foi muuuiiiito mais rápido que com o exec. Experimente vc mesmo:

find / -type f -exec grep -l "cadeia" {} \;
find / -type f | xarg grep -l "cadeia"

| Também, esse teu `xargs -i' é bem GNU...  :-)
| Eu não sei porque esse find-utils não segue nem de longe os 
| padrões.  Vou
| fazer uma modificação e enviar ao autor.  Usam um sistema 
| totalmente nada
| a ver com o usual.  Não entendo.
| 
| Adicionalmente, esse problema poderia ser resolvido de uma 
| outra maneira:
| $ cp arq /home/*

Esta é a saída mais óbvia, mais otimizada e mais tudo. Fico danado qdo não
vejo o óbvio...;(

| Ou, se tiver problema com entrada não-diretórios, um exemplo, na zsh:
| $ cp arq /home/*(/)
| 
| Porque...  find é desperdício de recursos  :-)
| 
| -- 
| Felipe Kellermann
Valeu Felipe, pelo menos deixamos na lista uma discussão produtiva.
Vc respondeu ao Aurélio o convite que ele nos fez para sermos juízes de um
concurso? Eu aceitei.

[ ]s,
Julio
 


reply via email to

[Prev in Thread] Current Thread [Next in Thread]