Angenommen, ich habe zwei Ordner mit unterschiedlichen Inhalten foo
und bar
. Wie kann ich fusionieren bar
zu , foo
so dass:
- Dateien
foo
, die sich nicht in diesembar
Ordner befinden, bleiben unberührt. - Dateien
bar
, die sich nicht infoo
befinden , befinden sich jetzt infoo
. - Dateien
foo
, die sich auch inbar
befinden, wurden durch die Dateien von ersetztbar
.
unix
shell
file-management
Svish
quelle
quelle
cp -R /path/to/bar /path/to/foo
würden, würde es ein Verzeichnisbar
darin erstellenfoo
. Subtiler Punkt.bar
(dh Namen, die mit einem Punkt beginnen -.
) werden aufgrund der Funktionsweise des Shell-Globbing nicht angezeigt.Ich hatte ein sehr ähnliches Bedürfnis: Zusammenführen
bar
in,foo
aber Dateien, die sich in befinden,bar
sollten keine übereinstimmenden Dateien in überschreibenfoo
. In diesem Fall:quelle
Versuche dies :
$ cp -r
-u
-v /path/to/foo/* /path/to/bar/
Von
man cp
-u, --update nur kopieren, wenn die SOURCE-Datei neuer als die Zieldatei ist oder wenn die
Zieldatei fehlt. -R, -r, --rekursive Verzeichnisse rekursiv kopieren
quelle
man cp
-> -u, --update: Nur kopieren, wenn die SOURCE-Datei neuer ist als die