OS X で「mv」または「ditto」を使用してフォルダを結合する

OS X で「mv」または「ditto」を使用してフォルダを結合する

Windows の方法に慣れていたのですが、OS X にはマージ機能がないことがわかりました。移動はフォルダの置き換えを意味します。これは理にかなっていますが、マージがなくなったのが残念です。


私は 2 つの Wordpress ディレクトリを持っています。1 つにはデフォルトのソースが含まれ、もう 1 つにはプラグインやカスタム テーマなどを含む動作バージョンが含まれます。

この 2 つの違いを確認したいので、SVN に配置します。フォルダー 1 はすでに作成されているので、理論的には、すべてを 2 の内容に置き換えて、隠し SVN ファイルはそのままにして、フォルダー 2 の内容をフォルダー 1 にマージするだけです。

残念ながら、OS X は移動するとフォルダーを置き換えてしまうため、SVN クライアントがおかしくなり、フォルダー構造を理解できなくなります。

したがって、選択肢はmvとであると思いますdittoが、私の状況ではどちらをどのように使用すればよいでしょうか?

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

見つかったものはすべて上書きしますmvが、フォルダー 1 内に既に存在し、フォルダー 2 に重複がないものについてはそのまま残します。

答え1

フォルダを1つの方法で結合する最も簡単な方法は、例えば

フォルダ1→フォルダ2のすべてを結合する

を使用することになりますrsync

rsync -avh folder1/* folder2/

この意志:

  • フォルダ 1 とそのサブディレクトリにのみ存在するすべてのファイルをフォルダ 2 に移動する
  • ないフォルダ2にすでに存在するものがあれば上書きする
  • 変更されたファイルを上書きする、ない限り--ignore-existingオプションを追加する
  • フォルダ2から何も削除しない、ない限り--deleteオプションを追加する

これを自分の状況に合わせて自由に調整してください (とfolder1folder2逆になっていると思います)。

次のコマンドを呼び出して、コマンドが何を実行するか確認することができます。

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

スイッチdry-runには、その機能が表示されます。


バックスラッシュには特別な意味があるので、folder2/宛先が と同じではないことに注意してください。使用方法とその他のオプションについては、folder2のマニュアルページを確認してください。rsync

-Pまた、 ( によると--helpsame as --partial --progress)も推奨されます。これはshow progress during transferkeep partially transferred files(失敗した場合の再試行に役立ちます)を追加します。

答え2

@slhck の言うとおりにこれを行うこともできますし、 を使用することもできますcp

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

関連情報