
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 dotglob
vorher auf.
Antwort2
um eine identische Kopie lokal oder remote zu erhalten, würde ich rsync
gegenü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 cp
jedoch so einfach wie mit.
So kopieren Sie ein Verzeichnis A
und seinen zu B
verwendenden Inhalt:
rsync -va test/A test/B
A
um den Inhalt des Verzeichnisses (einschließlich versteckter Dateien) zu kopieren, B
verwenden Sie:
rsync -va test/A/ test/B
wenn B nicht existiert, wird es erstellt