答案1
您遇到的行为是设计使然。我认为您无法获得想要的结果,除非您允许使用除 之外的其他工具diff
。从您的评论中:
当我读到“递归”时,我假设该过程不会在第一级停止。
它不会因为第一级而停止。注意递归的含义:
使用以下函数在自己的代码中调用自己
(来源:这里;重点是我的)
假设你foo
在和中diff1
都有一个共同的子目录diff2
。递归意味着你的原始命令diff -r diff1 diff2
在某个时候调用
diff -r diff1/foo diff2/foo
好的,实际上,这很可能是通过单个进程中的子程序调用自身来完成的(但我猜实际调用diff
可执行文件的实现是可能的)。从逻辑上讲,它仍然是这样的。
您有diff1/folder
,但没有diff2/folder
。您如何调用diff
来比较这些?换句话说,应该<unknown_name>
是什么,以便您从下面的表格中获得所需的输出?
diff -r diff1/folder diff2/<unknown_name>
没有<unknown_name>
合适的。递归diff
不能下降到,folder
否则会变成类似递归ls
或的东西find
。递归ls
或find
不是它的工作。
从中学习之后,您仍然可以diff1/folder
使用ls -R
或(默认为递归)进行查询。find
diff
Only in diff1: folder