dir1
内の対応する同じファイル名を持つ内のすべてのファイルを検索しdir2
、それらを のファイルに置き換えたいですdir2
。
例えば:
dir1: first.txt second.txt
dir2: third.txt first.txt
dir1
したがって、古いファイルから を削除し、からfirst.txt
に置き換えたいと思います。first.txt
dir2
Bash ターミナルを使用してこれを実現するにはどうすればよいでしょうか?
答え1
実際のところ、あなたが求めていることを正確に実行するコマンドが 1 つあります。
rsync -av --existing dir2/ dir1/
これは、ファイルが dir1 に既に存在する場合にのみ、dir2 から dir1 にファイルを再帰的にコピーします。
オプション-av
は、rsync を使用してファイルをコピーするときに通常使用するオプションです。
この--existing
オプションはrsync
、受信側で新しいファイルの作成をスキップするように指示します。
コマンドラインの dir2/ の末尾にスラッシュを付ける必要があります。これは、rsync
スラッシュ内のほとんどのコマンドとは異なる動作をするためです。これは、rsync に対してスラッシュが意味を持つためです。
rsync
と同様にネットワーク経由でも使用できますscp
。
rsync
他の多くの種類のファイル同期、更新、およびバックアップ タスクを処理できます。
答え2
rsync はオプションを使用してこれを実行できます--existing
:
rsync -v --existing dir2/* dir1/