Jak skopiować w bash wszystkie katalogi i pliki rekurencyjnie?

137

Mam skrypt:

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

SourceDir zawiera również podfoldery.

Problem dotyczy DestFoldernie tylko wszystkich drzew, ale także wyższych poziomów wszystkich innych poziomów i plików.

Jak naprawić ?

user710818
źródło
Przepraszamy, zapomniałem dodać -name "* .txt"
user710818

Odpowiedzi:

289
cp -r ./SourceFolder ./DestFolder
lanzz
źródło
6
Tak więc, dla wyjaśnienia, opcja kapitał -R ponownie skopiuje katalog główny; small -r powoduje zachowanie tych samych ścieżek głównych.
AnneTheAgile
8
@AnneTheAgile - z moich niedawnych testów i zgodnie ze stronami podręcznika man -r i -R nie różnią się.
aaaaaa
@aaaaaa, ty! który system operacyjny / wersję używasz? Później dowiedziałem się, że wydaje się, że polecenia bash mogą się nieznacznie różnić w różnych systemach operacyjnych.
AnneTheAgile
2
cpnie jest poleceniem bash, ale oddzielnym plikiem wykonywalnym, więc jest specyficzne dla systemu. Z drugiej strony, prawdziwe polecenia bash są takie same w różnych systemach operacyjnych.
lanzz
52

kod do prostej kopii.

cp -r ./SourceFolder ./DestFolder

kod kopii z wynikiem pomyślnym

cp -rv ./SourceFolder ./DestFolder

kod dla Forcefully, jeśli źródło zawiera plik tylko do odczytu, zostanie również skopiowany

cp -rf ./SourceFolder ./DestFolder

po szczegóły pomocy

cp --help
user3708054
źródło