Wie kopiere ich alle rekursiven Verzeichnisse und Dateien in Bash?

137

Ich habe ein Skript:

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

SourceDir enthält auch Unterordner.

Problem, dass DestFoldernicht nur in allen Bäumen, sondern in höheren Ebenen alle anderen Ebenen und Dateien.

Wie repariert man ?

user710818
quelle
Entschuldigung, ich habe vergessen, -name "* .txt"
hinzuzufügen

Antworten:

289
cp -r ./SourceFolder ./DestFolder
lanzz
quelle
6
Zur Verdeutlichung kopiert die Option "Capital -R" das Stammverzeichnis erneut. Die Option small -r behält die Stammpfade bei.
AnneTheAgile
8
@AnneTheAgile - von meinen Tests gerade jetzt und gemäß den Manpages unterscheiden sich -r und -R nicht.
aaaaaa
@aaaaaa, ty! Auf welchem ​​Betriebssystem / welcher Version bist du? Ich habe später herausgefunden, dass sich Bash-Befehle von Betriebssystem zu Betriebssystem geringfügig unterscheiden können.
AnneTheAgile
2
cpist kein Bash-Befehl, sondern eine separate ausführbare Datei, daher systemspezifisch. Echte Bash-Befehle sind dagegen für alle Betriebssysteme gleich.
Lanzz
52

Code für eine einfache Kopie.

cp -r ./SourceFolder ./DestFolder

Code für eine Kopie mit Erfolgsergebnis

cp -rv ./SourceFolder ./DestFolder

Code für Forcefully Wenn die Quelle eine schreibgeschützte Datei enthält, wird sie auch kopiert

cp -rf ./SourceFolder ./DestFolder

Für Details helfen

cp --help
user3708054
quelle