Verwenden von „mv“ oder „ditto“ zum Zusammenführen von Ordnern in OS X

Verwenden von „mv“ oder „ditto“ zum Zusammenführen von Ordnern in OS X

Ich bin an die Vorgehensweise unter Windows gewöhnt und habe gerade herausgefunden, dass OS X keine Zusammenführungsfunktion hat – beim Verschieben wird der Ordner ersetzt. Das macht zwar Sinn, aber ich vermisse das Zusammenführen!


Ich habe zwei Wordpress-Verzeichnisse, 1 enthält die Standardquelle und 2 enthält die bearbeitete Version mit Plugins, benutzerdefinierten Designs usw.

Ich möchte den Unterschied zwischen diesen beiden sehen, also lege ich es auf SVN. Ordner 1 ist bereits aktiv, jetzt sollte ich theoretisch einfach den Inhalt von 2 mit 1 zusammenführen, indem ich alles durch den Inhalt von 2 ersetze, aber versteckte SVN-Dateien unberührt lasse.

Leider ersetzt OS X beim Verschieben den Ordner, sodass mein SVN-Client verrücktspielt und die Ordnerstruktur nicht mehr versteht.

Also, ich glaube, meine Optionen sind mvund ditto, aber welche würden Sie in meiner Situation verwenden und wie?

sudo mv wordpress /Documents/svn/wwwholiday/trunk/wordpress

Ich möchte mvalles überschreiben, was es findet, aber alles in Ruhe lassen, was sich bereits in Ordner 1 befindet und kein Duplikat in Ordner 2 hat.

Antwort1

Der einfachste Weg, Ordner auf eine Weise zusammenzuführen, zB

Alles aus Ordner 1 → Ordner 2 zusammenführen

wäre zu verwenden rsync.

rsync -avh folder1/* folder2/

Dieser Wille:

  • alle Dateien, die nur in Ordner 1 und seinen Unterverzeichnissen vorhanden sind, in Ordner 2 verschieben
  • nichtalles in Ordner 2 überschreiben, wenn es dort schon vorhanden ist
  • geänderte Dateien überschreiben,es sei dennSie fügen die --ignore-existingOption hinzu
  • nichts aus Ordner 2 löschen,es sei dennSie fügen die --deleteOption hinzu

Passen Sie dies gerne an Ihre Situation an (wobei folder1und folder2umgekehrt sind, nehme ich an).

Sie können versuchen, herauszufinden, was der Befehl bewirkt, indem Sie Folgendes aufrufen:

rsync -avh --dry-run folder1/ folder2/

Der dry-runSchalter zeigt Ihnen, was er tut.


Vergessen Sie nicht, dass die Backslashes eine besondere Bedeutung haben, da folder2/das Ziel nicht dasselbe ist wie . Informationen zur Verwendung und weiteren Optionen folder2finden Sie auf der Manpage von .rsync

Außerdem wird -P(gemäß --help, same as --partial --progress) empfohlen, wodurch show progress during transferund hinzugefügt wird keep partially transferred files(was für Wiederholungsversuche nützlich ist, falls ein Fehler aufgetreten ist).

Antwort2

Sie können dies tun, wie @slhck sagt, oder Sie können auch einfach verwenden cp.

$sudo cp -R wordpress/ /Documents/svn/wwwholiday/trunk/wordpress

verwandte Informationen