Как скопировать папку в несколько папок с помощью командной строки? [Дубликат]

У этого вопроса уже есть ответ здесь: Как скопировать один файл в несколько имен файлов? 2 ответа

Я хочу скопировать определенную папку из одной точки в другую, и у меня есть более 300 целевых папок, где я хочу скопировать эту конкретную папку. Может ли кто-нибудь помочь мне с правильным решением? предложение сценария оболочки было бы здорово.

1
задан 6 July 2016 в 10:46

3 ответа

Я бы предложил использовать цикл while ... do

while read -r d; do
  cp -R -- foo/ "$d"
done < destinations.txt

В качестве альтернативы, используя xargs

xargs -n1 -a destinations.txt cp -R foo --
12
ответ дан 23 May 2018 в 08:29

Ядро функции, имеющейся у меня в .bashrc, для этого:

echo $destinations | xargs -n 1 cp $sourcefile

(думаю, я получил это из этого ответа) Если адресаты находятся в destinations.txt, просто замените echo $destinations на cat destinations.txt. Имена файлов с пробелами выдадут вам проблемы, если они не указаны на входе, поэтому будьте осторожны.

Вот полная функция из моего .bashrc. Вероятно, не очень надежный, поскольку мои варианты использования были простыми, и я не хотел тратить на это много времени, поэтому не ожидайте, что он будет обрабатывать более сложные имена файлов.

function distribute {
        arguments=""
        destinations=""
        sourcefile=""
        while [[ $# -ge 1 ]]; do
                key="$1"

                if [[ "$key" == "-h" ]]; then
                        echo "usage: $0 [flags to cp] source_file destination_1 [... destination_N]"
                elif [[ "$key" == -* ]]; then
                        arguments+=" $key"
                elif [ -z "$sourcefile" ]; then
                        sourcefile="$key"
                else
                        destinations+=" $key"
                fi

                shift
        done

        echo $destinations | xargs -n 1 cp $arguments $sourcefile
}
3
ответ дан 23 May 2018 в 08:29
[F1]
0
ответ дан 23 May 2018 в 08:29

Другие вопросы по тегам:

Похожие вопросы: