以下に示すように、同じファイルツリーを持つproject1
2つのプロジェクトがあります。project2
.
├── src
│ ├── index.html
│ ├── main.js
│ ├── normalize.js
│ ├── routes
│ │ ├── index.js
│ │ └── Home
│ │ ├── index.js
│ │ └── assets
│ ├── static
│ ├── store
│ │ ├── createStore.js
│ │ └── reducers.js
│ └── styles
└── project.config.js
ここで、各ツリーの次のファイルが互いに等しいかどうかを比較したいと思います。
比較するファイル.txtsrc/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ディレクトリでこのファイル名を使用して呼び出します。