Для отдельных файлов вы можете использовать tee
для копирования в несколько мест:
cat <inputfile> | tee <outfile1> <outfile2> > <outfile3>
или если вы предпочитаете демоггифицированную версию:
tee <outfile1> <outfile2> > <outfile3> < <inputfile>
Обратите внимание, что, как указывает Деннис в tee
выходных комментариях, stdout
так и перечисленных файлах, следовательно, используя перенаправление, чтобы указать на файл 3 в приведенных выше примерах. Вы также можете перенаправить это к следующему /dev/null
пункту - это имеет преимущество, заключающееся в том, что список файлов более согласован в командной строке (что может облегчить написание сценария решения для переменного числа файлов), но немного менее эффективен (хотя разница в эффективности небольшая: примерно такая же, как разница между использованием cat
версии или версии без нее cat
):
cat <inputfile> | tee <outfile1> <outfile2> <outfile3> > /dev/null
Вероятно, вы могли бы комбинировать одно из вышеперечисленного с find
довольно легко работать с несколькими файлами в одном каталоге и менее легко работать с файлами, распределенными по структуре каталогов. В противном случае вам может потребоваться отключить несколько операций копирования параллельно в качестве отдельных задач и надеяться, что кэш диска ОС будет достаточно ярким и / или достаточно большим, чтобы каждая из параллельных задач использовала кэшированное чтение данных с первой, а не вызывало дисковод обмолота.
НАЛИЧИЕ: tee
обычно доступно в стандартных установках Linux и других unix- или unix-подобных системах, обычно в составе пакета «coreutils» GNU. Если вы используете Windows (ваш вопрос не указан), вы должны найти его в различных портах Windows, таких как Cygwin.
ИНФОРМАЦИЯ О ПРОГРЕССЕ. Поскольку копирование большого файла с оптического носителя может занять некоторое время (или по медленной сети, или даже по более крупному файлу даже с локального быстрого носителя), информация о ходе может быть полезной. В командной строке я предпочитаю использовать зритель трубы (доступен в большинстве Linux дистрибутивов и многих коллекциях портов для Windows и легко скомпилировать себя , где не доступны напрямую) для этого - просто заменить cat
с pv
следующим образом:
pv <inputfile> | tee <outfile1> <outfile2> > <outfile3>