Для отдельных файлов вы можете использовать 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>