Bash
給定兩個項目中的文件列表,如何查看哪些文件相同
我有兩個名為的項目
project1
並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
有沒有辦法使用單個 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 目錄下使用該文件名呼叫。