msoliver
(usa Debian)
Enviado em 08/09/2016 - 20:45h
fpires escreveu:
Nenhuma das respostas acima resolve o problema, por uma simples razão:
A linha de comando tem uma limitação na quantidade de parâmetros que podem ser passados. Esse limite é de 10240 parâmetros. Assim, ao executar
cp /origem/*.jpg /destino
o bash iria substituir o *.jpg pelo nome de 25.000 arquivos, gerando 25.001 parâmetros (o nome dos arquivos de origem + o diretório de destino) e causando erro. Esse erro não consta na página de manual do
cp.
A solução para isso seria executar a cópia através do find:
find /origem -name '*.jpg' -exec cp {} /destino \;
Isso iria executar o comando "cp" 25.000 vezes, com 2 parâmetros em cada execução (origem e destino), ao invés de tentar executar com 25.000 parâmetros.
Boa noite "fpires".
Para constatar a sua afirmação, fiz o teste . . .
Criei 25000 arquivos na pasta Documentos e executei o comando,
cp Documentos/*.txt Downloads/
O mesmo, foi executado sem qualquer erro . . .
ls -l Documentos/*.txt|wc -l
25000
ls -l Downloads/*.txt|wc -l
25000
Att.:
Marcelo Oliver