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

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

Mover mais de 1180 arquivos em um único 'mv'


From: Rodolfo Villanova
Subject: Mover mais de 1180 arquivos em um único 'mv'
Date: Tue, 15 Jun 2004 17:55:27 -0300

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





reply via email to

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