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 ?


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

Antworten:


289
cp -r ./SourceFolder ./DestFolder

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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.