Как скопировать в bash все каталоги и файлы рекурсивно?

137

У меня есть скрипт:

find ./SourceFolder/ -maxdepth 4 -exec cp -R '{}' ./DestFolder/ \;

SourceDir содержит также подпапки.

Проблема в том, что DestFolderне только во всем дереве, но и на всех уровнях и файлах.

Как исправить ?

user710818
источник
Извините, забыл добавить -name "* .txt"
user710818

Ответы:

289
cp -r ./SourceFolder ./DestFolder
lanzz
источник
6
Итак, чтобы уточнить, опция capital -R снова скопирует корневой каталог; Параметр small -r сохраняет корневые пути одинаковыми.
AnneTheAgile
8
@AnneTheAgile - от моих тестов только что и согласно страницам руководства, -r и -R не отличаются.
аааааа
@aaaaaa, ты! на какой ОС / версии вы работаете? Позже я узнал, что команды bash могут слегка различаться в разных операционных системах.
AnneTheAgile
2
cpэто не команда bash, а отдельный исполняемый файл, поэтому она зависит от системы. Истинные команды bash, с другой стороны, одинаковы для всех операционных систем.
lanzz
52

код для простой копии.

cp -r ./SourceFolder ./DestFolder

код для копии с успешным результатом

cp -rv ./SourceFolder ./DestFolder

код для принудительно, если источник содержит какой-либо файл только для чтения, он также будет копировать

cp -rf ./SourceFolder ./DestFolder

для получения дополнительной информации

cp --help
user3708054
источник