Wenn ich benutze
cp -R inputFolder outputFolder
Das Ergebnis ist kontextabhängig :
- Ist
outputFolder
dies nicht der Fall, wird es erstellt und der Pfad des geklonten Ordners wird angezeigtoutputFolder
. - Wenn
outputFolder
vorhanden, wird der erstellte Klon erstelltoutputFolder/inputFolder
Das ist schrecklich , weil ich ein Installationsskript erstellen möchte, und wenn der Benutzer es versehentlich zweimal ausführt, hat er es outputFolder
beim ersten Mal erstellt, und beim zweiten Mal wird das gesamte Material in neu erstellt outputFolder/inputFolder
.
- Ich möchte immer das erste Verhalten: einen Klon neben dem Original erstellen (als Geschwister).
- Ich möchte
cp
portabel sein (zB MINGW wird nichtrsync
ausgeliefert) - Ich habe es überprüft,
cp -R --parents
aber dies stellt den Pfad bis zum Ende des Verzeichnisbaums wieder her (der Klon wird also nichtoutputFolder
aber seinsome/path/outputFolder
). --remove-destination
oder--update
falls 2 nichts ändert, werden noch dinge in kopiertoutputFolder/inputFolder
Gibt es eine Möglichkeit, dies zu tun, ohne vorher zu prüfen, outputFolder
ob der Ordner existiert (wenn er nicht existiert, dann ...) oder zu verwenden rm -rf outputFolder
?
Wie sieht die vereinbarte, portable UNIX-Methode dafür aus?
rsync
?
cp
ist die Weiterleitung zwischen zwei tar
Befehlen eine gute und zuverlässige Methode zum Kopieren von Bäumen.
rsync
ausgeliefert wurde.
tar -C input -cf - . | tar -C output -xf -
. -C
Ändert das Arbeitsverzeichnis, ist aber keine Standardoption. Wenn dies nicht unterstützt wird, müssen Sie zunächst die beiden Teer in den richtigen Arbeitsverzeichnissen ausführen. Beispiel: ( cd input && tar -cf - . ) | ( cd output && tar -xf - )
Wenn Sie jedoch mit Windows arbeiten, würde ich nur die Antwort von Roaima verwenden.
mv
eine Sammlung von Dateien in eine einzige reguläre verschoben wird?