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

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

29.03.2017 02:58:27 Просмотров 22 Источник

Всем привет. В каталоге /crm лежат штук 200 подкаталогов и тысяч 6 просто разных файлов. Как скопировать только 200 подкаталогов (рекурсивно – со всеми под-под-каталогами и файлами) в папку /crm_bak?

То есть, в исходном каталоге:

$ tree
.
├── dir1
│   ├── dir3
│   │   └── file4
│   └── file3
├── file1
└── file2

А после копирования должно получиться:

$ tree
.
└── dir1
    ├── dir3
    │   └── file4
    └── file3
У вопроса есть решение - Посмотреть?

https://ru.stackoverflow.com/questions/645727/%d0%9a%d0%b0%d0%ba-%d1%81%d0%ba%d0%be%d0%bf%d0%b8%d1%80%d0%be%d0%b2%d0%b0%d1%82%d1%8c-%d1%82%d0%be%d0%bb%d1%8c%d0%ba%d0%be-%d0%ba%d0%b0%d1%82%d0%b0%d0%bb%d0%be%d0%b3%d0%b8-%d0%b2-linux#comment920939_645727
cp -r /src/*/ dst/

Ответы - Как скопировать только каталоги в Linux? / Как скопировать только каталоги в Linux?

PinkTux

29.03.2017 03:08:34

Только каталоги:

rsync -av -f"+ */" -f"- *" /откуда/ /куда/

С остальным определитесь: "только каталоги" или "только 200 подкаталогов(рекурсивно - со всеми под-под-каталогами))) и файлами)"


Возможно, речь о:

find /откуда/ -maxdepth 1 -type d -exec cp -r {} /куда/ \;
# но можно и rsync вместо cp использовать, зависит от конкретики
Sergey

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
Закрыть X