2つのディレクトリ間で同じファイルをすべて検索して置換する

2つのディレクトリ間で同じファイルをすべて検索して置換する

dir1内の対応する同じファイル名を持つ内のすべてのファイルを検索しdir2、それらを のファイルに置き換えたいですdir2

例えば:

dir1: first.txt second.txt
dir2: third.txt first.txt

dir1したがって、古いファイルから を削除し、からfirst.txtに置き換えたいと思います。first.txtdir2

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/

関連情報