Как копировать все папки в тот же каталог?

Если мне назвали тысячи папок a/ b/ c/ и т.д., как я могу копировать их и их содержание, многократно таким образом, что скопированной папке дали бы другое имя, например, a-copy1/ b-copy1/ c-copy1/ ... a-copy12/ b-copy12/ c-copy12/

3
задан 1 November 2019 в 18:25

4 ответа

Этот сценарий должен сделать это возможным:

#! /usr/bin/env bash
set -e

for i in /path/to/folder
do
        if [ -d "$i" ]
        then
                for r in $(seq 1 5)
                do
                        cp -r "$i" "$i"\-copy"$r"
                done
        fi
done

информация:

  • for r in $(seq 1 5): Это позволяет Вам выбирать количество копий для создания.
  • if [ -d "$i" ]: проверьте, является ли цель папкой.
  • cp -r "$i" "$i"\-copy"$r": выполните копию.
  • set -e: остановитесь на первой ошибке.

Демонстрационные данные:

a b c d e f

Демонстрационный вывод:

a        a-copy3  b        b-copy3  c        c-copy3  d        d-copy3  e-copy2  e-copy5  f-copy2  f-copy5
a-copy1  a-copy4  b-copy1  b-copy4  c-copy1  c-copy4  d-copy1  d-copy4  e         e-copy3  f        f-copy3
a-copy2  a-copy5  b-copy2  b-copy5  c-copy2  c-copy5  d-copy2  d-copy5  e-copy1   e-copy4  f-copy1  f-copy4
6
ответ дан 1 December 2019 в 13:22

Если у Вас есть "тысячи" файлов, и/или каталоги для обработки, find и xargs являются предпочтительными инструментами. Читайте man find и man xargs.

find . -maxdepth 1 -type d -print0 |\
  xargs -0 --no-run-if-empty bash_script

, Где bash_script файл (режим 755), в Вашем $PATH содержащий написанный пользователем сценарий, чтобы сделать копирование.

1
ответ дан 1 December 2019 в 13:22

Попробуйте в своем каталоге:

ls | grep "pattern" | xargs -i mkdir "{}-copy1"

Вы доберетесь, все папки с "шаблоном" получают дубликат и переименовывают с-copy1 в конце.

0
ответ дан 1 December 2019 в 13:22

Можно записать простой сценарий удара как:

    for i in {1..10}; do
        for dir in $(find /src/dir -maxdepth 1 -type d); do
            cp -r $dir /dst/dir/$dir-copy$i;
        done
    done

Этот отрывок сделает 10 копий каталогов расположенными на/src/dir к/dst/dir

0
ответ дан 1 December 2019 в 13:22

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

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