[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
- RES: RES: [shell-script] Copiar arquivo para as pastas,
Julio Cezar Neves - DATAPREVRJ <=