我有两个名为project1
且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
有没有办法使用单个 unix 命令来实现此目的,该命令利用 files-to-compare.txt 列表,而不必为列表中的每个文件执行单独的命令?如果是这样,怎么办?
编辑:这是一个不同的问题比这个因为该问题询问比较两个目录中的所有文件。这个问题询问分布在多个目录中的特定文件。排除许多本来会包含在其他问题的答案中的内容。
答案1
在一行中——而不是单个命令——为每个命令调用一次 diff :
while IFS= read -r filename; do diff project1/"$filename" project2/"$filename"; done < files-to-compare.txt
这会逐行读取 files-to-compare.txt 文件,确保没有什么能妨碍阅读整行,然后diff
在每个project1和project2目录下使用该文件名进行调用。