In Bash muss ich das tun:
Nehmen Sie alle Dateien in einem Verzeichnis
Kopieren Sie sie in ein vorhandenes Verzeichnis
Wie mache ich das? Ich habe es versucht cp -r t1 t2
(sowohl t1 als auch t2 sind vorhandene Verzeichnisse, t1 enthält Dateien), aber es wurde ein Verzeichnis namens t1 in t2 erstellt. Ich möchte das nicht. Ich brauche die Dateien in t1, um direkt in t2 zu gelangen. Wie mache ich das?
cp
Fragen durchaus alsbash
Fragen angesehen werden können, bei denen es sich um eine Programmiersprache handelt. Ich habe noch nie eine Python-Frage gesehen, die über das Schließen von Dateikopien spricht.Antworten:
Was Sie wollen ist:
Der Punkt am Ende weist ihn an, den Inhalt des aktuellen Verzeichnisses zu kopieren, nicht das Verzeichnis selbst. Diese Methode umfasst auch versteckte Dateien und Ordner.
quelle
mv
. Weiß jemand warum?Wenn Sie etwas aus einem Verzeichnis in das aktuelle Verzeichnis kopieren möchten , gehen Sie folgendermaßen vor:
Dies setzt voraus, dass Sie nicht versuchen, versteckte Dateien zu kopieren.
quelle
Oder wenn Sie Verzeichnisse in dir1 haben, die Sie ebenfalls kopieren möchten
quelle
dir1/.*
ist keine gute Idee, da es dir1 / .. kopiert (dh das übergeordnete Verzeichnis des Verzeichnisses, das Sie tatsächlich kopieren möchten). Es kopiert auch dir1 /. Das ist in Ordnung, außer dass es bereits (meistens) kopiert wurde, also machst du die Arbeit zweimal.dir1/.*
Problem mit / versteckten Dateien umgehen, indem Sie in das Verzeichnis kopieren, aus dem Sie kopieren möchten, und dann darauf verweisen als.
. Wenn Sie also alle Dateien einschließlich versteckter Dateien aus einem Verzeichnis in ein vorhandenes Verzeichnis kopieren möchten, können Sie:cd [source dir]
,cp . [path to destination dir, with no trailing slash]
.Angenommen, t1 ist der Ordner mit den darin enthaltenen Dateien und t2 ist das leere Verzeichnis. Was Sie wollen, ist ungefähr so:
Denken Sie daran, dass für das erste Beispiel t1 und t2 die vollständigen Pfade oder relativen Pfade sein müssen (je nachdem, wo Sie sich befinden). Wenn Sie möchten, können Sie zum leeren Ordner (t2) navigieren und dies tun:
Oder Sie können zu dem Ordner mit den Dateien (t1) navigieren und dies tun:
Hinweis: Das * -Zeichen (oder der Platzhalter) steht für alle Dateien und Ordner. Das -R-Flag bedeutet rekursiv (alles in allem).
quelle
Der abschließende Schrägstrich im Quellverzeichnis ändert die Semantik geringfügig, sodass der Inhalt kopiert wird, nicht jedoch das Verzeichnis selbst. Es vermeidet auch die Probleme mit Globbing und unsichtbaren Dateien, die Bertrands Antwort hat (beim Kopieren
t1/*
fehlen unsichtbare Dateien, beim Kopieren von "t1 / * t1 /. *" - Kopien von t1 /. Und t1 / .., die Sie nicht möchten).quelle
$ mkdir t1
$ mkdir t2
$ touch t1/one
$ touch t1/two
$ touch t1/.three
$ cp -R t1/ t2
$ ls t2/
t1
(leider kein Codeformat in Kommentaren, lesbare Version unter pastebin.com/yszSxV6G )Abhängig von einigen Details müssen Sie möglicherweise Folgendes tun:
... dies ändert sich im Grunde genommen in das SRC-Verzeichnis und kopiert es auf das Ziel. Anschließend kehren Sie zu dem Zeitpunkt zurück, an dem Sie begonnen haben.
Die zusätzliche Aufregung besteht darin, relative oder absolute Ziele zu handhaben.
(Dies hängt nicht von der subtilen Semantik des
cp
Befehls selbst ab ... darüber, wie er Quellenspezifikationen mit oder ohne nachfolgendem / ... behandelt, da ich nicht sicher bin, ob diese über GNUcp
und mich hinaus stabil, portabel und zuverlässig sind Ich weiß nicht, ob dies auch in Zukunft so bleibt.quelle
In einigen Verzeichnissen wird dies als voll verwendet, da alle Inhalte von "Ordner1" in das neue Verzeichnis "Ordner2" in einem Verzeichnis kopiert werden.
$ (pwd) erhält den Pfad für das aktuelle Verzeichnis.
Beachten Sie den Punkt (.) Nach Ordner1, um den gesamten Inhalt in Ordner1 abzurufen
quelle