Bash

給定兩個項目中的文件列表,如何查看哪些文件相同

  • November 12, 2018

我有兩個名為的項目project1project2具有相同的文件樹,如下所示。

項目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

有沒有辦法使用單個 unix 命令來完成此操作,該命令利用 files-to-compare.txt 列表,而無需為列表中的每個文件執行單獨的命令?如果是這樣,怎麼做?

編輯:這是一個與不同的問題,因為該問題要求比較兩個目錄中的所有文件。這個問題詢問散佈在多個目錄中的特定文件。排除許多本來會包含在另一個問題的答案中的內容。

在一行中——不是一個命令——為每個呼叫 diff 一次:

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

這將逐行讀取 files-to-compare.txt 文件,確保沒有任何東西妨礙讀取整行,然後diff在 project1 和 project2 目錄下使用該文件名呼叫。

引用自:https://unix.stackexchange.com/questions/481177