Para arquivos únicos, você pode usar tee
para copiar para vários lugares:
cat <inputfile> | tee <outfile1> <outfile2> > <outfile3>
ou se preferir a versão demoggada:
tee <outfile1> <outfile2> > <outfile3> < <inputfile>
Observe que, como Dennis aponta nos comentários, tee
produz para stdout
, bem como os arquivos listados, portanto, usa redirecionamento para apontar para o arquivo 3 nos exemplos acima. Você também pode redirecionar isso para /dev/null
como abaixo - isso tem a vantagem de manter a lista de arquivos mais consistente na linha de comando (o que pode facilitar a criação de uma solução para um número variável de arquivos), mas é um pouco menos eficiente (embora a diferença de eficiência seja pequena: aproximadamente igual à diferença entre usar a versão cat
ou a versão sem cat
):
cat <inputfile> | tee <outfile1> <outfile2> <outfile3> > /dev/null
Você provavelmente poderia combinar um dos itens acima com find
facilmente para operar em vários arquivos em um diretório e menos facilmente para operar em arquivos espalhados por uma estrutura de diretórios. Caso contrário, talvez seja necessário definir as várias operações de cópia em paralelo como tarefas separadas e esperar que o cache de disco do SO seja brilhante e / ou grande o suficiente para que cada uma das tarefas paralelas tenha dados de leitura armazenados em cache em vez de causar problemas. debatendo-se.
DISPONIBILIDADE: tee
é comumente disponível em configurações padrão do Linux e outros sistemas unix ou unix-like, geralmente como parte do pacote GNU "coreutils". Se você estiver usando o Windows (sua pergunta não especifica), você deverá encontrá-lo nas várias portas do Windows, como o Cygwin.
INFORMAÇÕES SOBRE PROGRESSO: Como a cópia de um arquivo grande em uma mídia ótica pode levar algum tempo (ou em redes lentas, ou em um arquivo ainda maior, mesmo a partir de mídia rápida local), informações de progresso podem ser úteis. Na linha de comando, costumo usar o visualizador de canais (disponível na maioria das distribuições de Linux e muitas coleções de portas do Windows e fácil para compilar a si mesmo onde não estiver disponível diretamente) para isso - basta substituir cat
por pv
da seguinte forma:
pv <inputfile> | tee <outfile1> <outfile2> > <outfile3>