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 18:44:59 -0300

Beleza, Fernando!

Como é que eu não havia pensado nisso antes?!

Mataste a charada!

Grande abraço!
--------------------------
Rodolfo D. Gross Villanova

> -----Mensagem original-----
> De: Fernando Lemes da Silva [mailto:address@hidden]
> Enviada em: terça-feira, 15 de junho de 2004 18:19
> Para: address@hidden
> Assunto: Re: [shell-script] Mover mais de 1180 arquivos em um único 'mv'
>
>
>
>     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]