Wie kopiere ich Ordner mit Dateien in einen anderen Ordner unter Unix / Linux? [geschlossen]

1191

Ich habe einige Probleme beim Kopieren eines Ordners mit Dateien in diesem Ordner in einen anderen Ordner. Der Befehl cp -rkopiert keine Dateien in den Ordner.

user2080656
quelle
Ich wünschte, dies könnte auf eine SE migriert werden, in der es mehr um Themen geht.
jrh
6
Bash-Programmierung ist ein Thema .
xskxzr

Antworten:

1979

Die Option, die Sie suchen, ist -R.

cp -R path_to_source path_to_destination/
  • Wenn destinationnicht vorhanden, wird es erstellt.
  • -Rbedeutet copy directories recursively. Sie können auch verwenden, -rda die Groß- und Kleinschreibung nicht berücksichtigt wird.
  • Beachten Sie die Nuancen beim Hinzufügen des Trailing /gemäß dem Kommentar von @ muni764 .
Pierre Salagnac
quelle
5
Ich frage mich, warum dieser genaue Befehl in Dockerfile alle Quellverzeichnisdateien in das Ziel kopiert, anstatt nur das gesamte Verzeichnis zu kopieren.
Holms
4
Ich glaube, das '/' am Ende macht einen Unterschied und das könnte für Ihre Erfahrung verantwortlich sein. Wenn die Quelle den abschließenden Schrägstrich enthält, wird nur das kopiert, was sich im Verzeichnis befindet. Wenn der abschließende Schrägstrich nicht enthalten ist, wird auch das Verzeichnis und anschließend der Inhalt kopiert. Mein Gedächtnis ist, dass dieses Verhalten je nach Befehl und möglicherweise Ereignis nach Betriebssystem etwas variiert. Hier ist eine Referenz mit weiteren Informationen.
OllieBrown
23
Ich würde sagen, wenn Sie die Quelle nicht einschließen möchten und sicherstellen möchten, dass alles kopiert wird (Symlinks, versteckte Dateien), ohne den übergeordneten Quellordner zu kopieren, verwenden Sie -ra source /. Ziel. Dadurch wird sichergestellt, dass der Inhalt des Ordners kopiert wird, nicht jedoch der übergeordnete Ordner selbst, was manchmal praktisch ist. Und der Unterschied ist das /.
Muni764
Dies scheint auch richtig zu funktionieren, wenn es sich bei den zu kopierenden Verzeichnissen um symbolische Links handelt, was mein Anwendungsfall war.
Gdalya
3
Beachten Sie die Bedeutung von "Schrägstrich" in Ihrer Quelle, da cp -r src/. destich weiß, dass es erwähnt wird, aber ich scheine es jedes Mal zu vermissen.
Bbeecher
368

Sie suchen nach dem cpBefehl. Sie müssen die Verzeichnisse so ändern, dass Sie sich außerhalb des Verzeichnisses befinden, das Sie kopieren möchten.

Wenn das Verzeichnis, das Sie kopieren, aufgerufen wird dir1und Sie es in Ihren /home/PicturesOrdner kopieren möchten :

cp -r dir1/ ~/Pictures/

Linux unterscheidet zwischen Groß- und Kleinschreibung und muss /nach jedem Verzeichnis wissen, dass es sich nicht um eine Datei handelt. ~ist ein Sonderzeichen im Terminal, das automatisch im Ausgangsverzeichnis des aktuellen Benutzers ausgewertet wird. Wenn Sie wissen müssen, in welchem ​​Verzeichnis Sie sich befinden, verwenden Sie den Befehl pwd.

Wenn Sie nicht wissen, wie ein Linux-Befehl verwendet wird, gibt es eine Handbuchseite, auf die Sie durch Eingabe von: verweisen können:

man [insert command here]

an einer Terminal-Eingabeaufforderung.

Um lange Dateipfade beim Eingeben in das Terminal automatisch zu vervollständigen, können TabSie drücken, nachdem Sie mit dem Eingeben des Pfads begonnen haben. Entweder werden Ihnen Auswahlmöglichkeiten angezeigt, oder der verbleibende Teil des Pfads wird eingefügt.

Alex W.
quelle
6
Zur weiteren Verdeutlichung werden mit dieser -rOption Verzeichnisse rekursiv kopiert.
TVann
5
Haben gibt die OP nicht , dass er wurde unter Verwendung des cp -rBefehls, aber das war es nicht richtig funktioniert?
MD XF
4
Der Grund, warum ich die Informationen zu Manpages hinzugefügt habe, ist, dass diese Flags verteilungsabhängig sein können. Jedoch zum größten Teil, wie es scheint -r, --recursiveund -Rist gleichwertig. Es wird auch häufige Fallstricke usw. geben, was schön ist.
Alex W
6
Wenn Sie das VERZEICHNIS und nicht nur den Inhalt portabel kopieren möchten, lassen Sie den abschließenden Bindestrich im Quellordner weg. cp -r dir1 ~/Pictures/
Mehtunguh
105

Verwenden:

$ cp -R SRCFOLDER DESTFOLDER/
cIph3r
quelle
4
So habe ich es gemacht und demo1_copyexistierte noch nicht$ ls demo1 demo3 README.md $ cp -R demo1/ demo1_copy/
HattrickNZ