Как скопировать только каталоги в Linux?
Всем привет.
В каталоге /crm
лежат штук 200 подкаталогов и тысяч 6 просто разных файлов.
Как скопировать только 200 подкаталогов (рекурсивно – со всеми под-под-каталогами и файлами) в папку /crm_bak
?
То есть, в исходном каталоге:
$ tree
.
├── dir1
│ ├── dir3
│ │ └── file4
│ └── file3
├── file1
└── file2
А после копирования должно получиться:
$ tree
.
└── dir1
├── dir3
│ └── file4
└── file3
У вопроса есть решение - Посмотреть?

Источник

cp -r /src/*/ dst/
Источник
Ответы - Как скопировать только каталоги в Linux? / Как скопировать только каталоги в Linux?

29.03.2017 03:08:34
Только каталоги:
rsync -av -f"+ */" -f"- *" /откуда/ /куда/
С остальным определитесь: "только каталоги" или "только 200 подкаталогов(рекурсивно - со всеми под-под-каталогами))) и файлами)"
Возможно, речь о:
find /откуда/ -maxdepth 1 -type d -exec cp -r {} /куда/ \;
# но можно и rsync вместо cp использовать, зависит от конкретики

30.03.2017 05:45:25
#!/bin/bash
# Скрипт копирует только каталоги, оставляя файлы на месте
# ОБЯЗАТЕЛЬНЫЙ 1-й параметр - откуда выполняем копирование.
# ОБЯЗАТЕЛЬНЫЙ 2-й параметр - куда выполняем копирование.
# Целевой каталог должен уже существовать
# Обработка скрытых каталогов с помощью звёздочки
shopt -s dotglob
# Просматриваем заданный параметром каталог
pushd $1
for dir in *
do
if [ -d $dir ]
then
# Это директория - выполняем рекурсивное копирование
cp -R $dir $2/$dir
fi
done
# Возвращаемся обратно
popd
Помочь в развитии проекта: