2つのプロジェクトのファイルのリストが与えられたときにどのファイルが同じであるかを確認する方法

2つのプロジェクトのファイルのリストが与えられたときにどのファイルが同じであるかを確認する方法

以下に示すように、同じファイルツリーを持つproject12つのプロジェクトがあります。project2

アイテム1/、アイテム2/
.
├── src
│   ├── index.html
│   ├── main.js
│   ├── normalize.js
│   ├── routes
│   │   ├── index.js
│   │   └── Home
│   │       ├── index.js
│   │       └── assets
│   ├── static
│   ├── store
│   │   ├── createStore.js
│   │   └── reducers.js
│   └── styles
└── project.config.js

ここで、各ツリーの次のファイルが互いに等しいかどうかを比較したいと思います。

比較するファイル.txt
src/main.js
src/routes/index.js
src/store/reducers.js
project.config.js

リスト内の各ファイルに対して別々のコマンドを実行せずに、files-to-compare.txtリストを利用する単一のunixコマンドを使用してこれを達成する方法はありますか?それでは、どうすればいいですか?

編集:これは別の質問ですこれより質問は、両方のディレクトリ内のすべてのファイルを比較することを尋ねるからです。この質問は、複数のディレクトリに分散された特定のファイルについて尋ねます。他の質問に対する回答に含めることができる多くの内容を除外します。

ベストアンサー1

1 つのコマンドではなく、1 行でコマンドごとに diff を 1 回呼び出します。

while IFS= read -r filename; do diff project1/"$filename" project2/"$filename"; done < files-to-compare.txt

これにより files-to-compare.txt ファイルが 1 行ずつ読み取られます。全行を読むのに邪魔になることはありません。diff各project1およびproject2ディレクトリでこのファイル名を使用して呼び出します。

おすすめ記事