Kopieren Sie alle Dateien von einem Ort zum anderen in Linux, ohne das Verzeichnis selbst zu kopieren

Kopieren Sie alle Dateien von einem Ort zum anderen in Linux, ohne das Verzeichnis selbst zu kopieren

test/A/Ich möchte einige oder alle Dateien aus einem Verzeichnis in das Verzeichnis kopieren test/B/, ohne jedoch das Verzeichnis A selbst zu kopieren.

Ich habe den Befehl ausprobiert cp -R test/A/ test/B, aber er kopiert das Verzeichnis und auch die Dateien und wird test/B/A/

Antwort1

Wenn Sie angeben test/A/, weisen Sie Bash an, das Verzeichnis selbst zu kopieren.

Um nur den Inhalt eines Verzeichnisses zu kopieren, verwenden Sieder *Globus:

cp -R test/A/* test/B

Dabei *werden alle Dateien in A abgeglichen, außer versteckte Dateien mit dem Präfix Punkt, z. B. .htaccess. Um diese ebenfalls mit einem einzuschließen *, rufen Sie shopt -s dotglobvorher auf.

Antwort2

um eine identische Kopie lokal oder remote zu erhalten, würde ich rsyncgegenüber bevorzugen cp. Dies gibt Ihnen eine viel feinere Kontrolle darüber, was kopiert oder sogar gelöscht werden soll, entweder an der Quelle oder am Ziel, falls gewünscht. Und behebt nebenbei Probleme mit versteckten Dateien (auch bekannt als .*). Die grundlegende Verwendung ist cpjedoch so einfach wie mit.

So kopieren Sie ein Verzeichnis Aund seinen zu Bverwendenden Inhalt:

rsync -va test/A test/B

Aum den Inhalt des Verzeichnisses (einschließlich versteckter Dateien) zu kopieren, Bverwenden Sie:

rsync -va test/A/ test/B

wenn B nicht existiert, wird es erstellt

verwandte Informationen