具有相同名称的差异文件

diff files with the same names

在一个目录中我有大约 20 个文件(假设它们的命名范围为 120),在第二个目录中我有 200 个文件(命名范围为 1200)。我怎么能diff只有同名的?

是否可以在不使用 bash 脚本的情况下使用 oneliner 完成此操作?

来自 man diff:

   --unidirectional-new-file
          treat absent first files as empty

测试

鉴于此结构:

seq 5 > aaa/a1
seq 5 > aaa/a2
seq 5 > aaa/a3
seq 5 > bbb/a1
seq 10 > bbb/a3

即:

$ tree aaa
aaa
├── a1
├── a2
└── a3

0 directories, 3 files
$ tree bbb
bbb
├── a1
└── a3

0 directories, 2 files

让我们比较一下:

$ diff aaa bbb --unidirectional-new-file
diff --unidirectional-new-file aaa/a1 bbb/a1
5a6,10
> 6
> 7
> 8
> 9
> 10
Only in aaa: a2

让我们反过来比较一下:

$ diff bbb aaa --unidirectional-new-file
diff --unidirectional-new-file bbb/a1 aaa/a1
6,10d5
< 6
< 7
< 8
< 9
< 10
diff --unidirectional-new-file bbb/a2 aaa/a2
0a1,5
> 1
> 2
> 3
> 4
> 5

所以顺序很重要:它提到存在于第一个目录中的文件,但不存在于第二个目录中。