我如何只比较某些文件?

How do I diff only certain files?

我有一个文件列表(目录中文件的子集),我想生成一个仅包含这些文件差异的补丁。

从 diff 手册来看,我似乎可以排除 (-x),但需要为我不想包含的每个文件指定它,这看起来很麻烦并且难以干净地编写脚本。

有没有办法只给 diff 一个文件列表?我已经将包含更改的文件隔离到一个单独的目录中,而且我还有一个包含文件名列表的文件,因此我可以以最有效的方式将其呈现给 diff。

我尝试过的:

cd filestodiff/
for i in `*`; do diff /fileswithchanges/$i /fileswithoutchanges/$i >> mypatch.diff; done

但是补丁不认为这是有效输入,因为没有包含文件名 header。

patchutils 提供 filterdiff 可以做到这一点:

diff -ur old/ new/ | filterdiff -I filelist > patchfile

several linux distributions

打包