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

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

RES: [shell-script] Mover mais de 1180 arquivos em um único 'mv'


From: Rodolfo Villanova
Subject: RES: [shell-script] Mover mais de 1180 arquivos em um único 'mv'
Date: Tue, 15 Jun 2004 19:46:46 -0300

Grande passe de calcanhar, Andreyev!

Eu havia testado um find semelhante, mas usando o 'xargs' pra passar os
arquivos como parâmetro, mas não casou a sintaxe.

Como o '-exec', beleza, funcionou direitinho, mas ao primeiro passar d'olhos
me pareceu que a execução é um pouco lenta. Vou testá-lo novamente contando
os tempos de execução e retornarei os resultados à lista outro dia, ok?

Grato +1x,
--------------------------
Rodolfo D. Gross Villanova

> -----Mensagem original-----
> De: Andreyev Dias de Melo [mailto:address@hidden]
> Enviada em: terça-feira, 15 de junho de 2004 18:42
> Para: address@hidden
> Assunto: Re: [shell-script] Mover mais de 1180 arquivos em um único 'mv'
>
>
> Vc pode fazer isso de inumeras formas, penso que a mais rápida é:
>
> $ find $DIRETORIO_ORIG -type f -exec mv \{\} $DIRETORIO_BKPS \;
>
> Observe que o find precisa dos {} escapados, e do ; escapado tbm,
> caso contrário
> vc receberá nosso velho conhecido "find: missing argument to `-exec'"
>
> Como sempre, não execute nada diretamente no ambiente de produção!
>
> Caso alguns arquivos do diretório destino sejam iguais aos do
> origem, vc pode
> economizar recuros usando o rsync:
>
> $ rsync --verbose --stats --recursive $DIRETORIO_ORIG $DIRETORIO_BKPS
>
> Mais informações em http://tinyurl.com/2yzx6 , por exemplo.
>
> Espero que isso ajude!
>
> []s
>
> Andreyev
>
> Fernando Lemes da Silva wrote:
> >     Eu usei isso uma vez para apagar arquivos do windows... tinha uns
> > 100.000.. ou coisa assim..
> >
> >     for arquivo in `find $DIRETORIO_ORIG/ -type f`; do mv $arquivo
> > $DIRETORIO_BKPS/; done
> >
> >     []'s
> >     Fernando Lemes
> >
> >
> > Rodolfo Villanova wrote:
> >
> >>Pessoal,
> >>
> >>Estou propondo aqui na lista um desafio ao qual não consegui
> encontrar uma
> >>solução simples que não passe por duas etapas, pelo menos, para
> resolvê-lo.
> >>
> >>Quem sabe alguém tem um truque na cartola e o apresenta ao respeitável
> >>público?
> >>
> >>Estou reformulando um script que transmite milhares de pequenos
> arquivos de
> >>um servidor para outro.  Depois de transmitidos, move-os para uma área
> >>temporária de backup. O problema reside na parte em que o script tem que
> >>mover esses arquivos para um outro diretório na mesma máquina. Pra quem
> >>ainda não passou por isso, pelo menos em ambientes Unix Sun e True64
> >>(provavelmente em Linux isso também ocorre), existe uma
> limitação no momento
> >>da substituição do "wildcard" - também conhecido como asterico
> ("*") - na
> >>expressão do nome dos arquivos, que apresenta a seguinte mensagem:
> >>
> >>ksh: /bin/ls: arg list too long
> >>
> >>O limite antes de esse erro passar a ocorrer no comando mv é um número
> >>próximo a 1180 arquivos.
> >>
> >>Tentei dois artífícios, mas não deram resultado:
> >>
> >>$ mv `find $DIRETORIO_ORIG/ -type f` $DIRETORIO_BKPS/
> >>
> >>-- Não resolveu. A limitação no 'move' não foi superado,
> ocorrendo o estouro
> >>de lista de argumento muito longa.
> >>
> >>$ find . -type f $DIRETORIO_ORIG/ -exec mv $DIRETORIO_BKPS/ {} \;
> >>
> >>ou ainda
> >>
> >>$ find . -type f $DIRETORIO_ORIG/ | xargs mv $DIRETORIO_BKPS/ {} \;
> >>
> >>-- Dão erro, pois o comando mv toma o $DIRETORIO_BKPS como primeiro
> >>parâmetro e os arquivos encontrados pelo 'find' como segundo, quando o
> >>desejado é que os parâmetros fossem o contrário.
> >>
> >>Eu não gostaria de montar num arquivo os nomes de cada um dos
> arquivos, com
> >>um comando 'mv' antes do nome do arquivo e o nome do
> diretório-destino após,
> >>pois me parece muito óbvio, apesar de resolver o caso.
> >>
> >>Alguém da lista tem uma proposta simples que resolva esse desafio em uma
> >>única linha de comando?
> >>
> >>De antemão informo que não resolveria o problema executar o
> script de backup
> >>em intervalos menores, pois há momentos do dia em que esses pequenos
> >>arquivos chegam aos milhares, em rajadas de poucos segundos.
> >>
> >>Agradeço desde já as idéias que forem propostas.
> >>
> >>Grato,
> >>--------------------------
> >>Rodolfo D. Gross Villanova
>
>
>
> ---------------------------------------------------------------------
> Esta lista não admite a abordagem de outras liguagens de
> programação, como perl, C etc. Quem insistir em não seguir esta
> regra será moderado sem prévio aviso.
> ---------------------------------------------------------------------
> Sair da lista: address@hidden
> ---------------------------------------------------------------------
> Esta lista é moderada de acordo com o previsto em
http://www.listas-discussao.cjb.net
---------------------------------------------------------------------

Links do Yahoo! Grupos









reply via email to

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