31 我正在尝试采取以下措施: diff `ls -1a ./dir1` `ls -1a ./dir2` 但这出于明显的原因不起作用。有没有比这更好的方法(1行)呢? ls -1a ./dir1 > lsdir1 ls -1a ./dir2 > lsdir2 diff lsdir1 lsdir2 谢谢 diff filenames ls — 布吉兹 source
47 你很亲近 在bash中,您需要进程替换,而不是命令替换: diff <(ls -1a ./dir1) <(ls -1a ./dir2) — 伊格纳西奥·巴斯克斯(Ignacio Vazquez-Abrams) source 但是,进程替换不是必需的。下面的答案(superuser.com/a/228773/566289)正确了! — 日1 除了答案会区别内容,不是文件名! — 在
10 diff -rq dir1 dir2 使用-r选项,遍历整个目录树,递归检查子目录和文件之间的差异,这些差异出现在每个树的可比较点。诀窍是使用-q选项禁止逐行比较 — 塞托 source 3 @festo:您遗漏了此问题的内容,我实际上不想比较文件的内容,我想要比较ls命令的输出 — bguiz 2011年 +1,实际上,只有一个警告,我得到了相同的输出,diff -rq报告链接的文件为“没有这样的文件或目录”。因此,再加上一个用于正确且坦率地说更简单的用法。(即使IVA的回答是更好的“学习机会”来替代流程(> _ <) — xtian 1 这比散布文件名要慢得多:必须读取并比较每个文件的整体。 — 2014年 当然@Josh,因为它确实递归.... — Braiam 1 @Braiam:即使您递归地对文件名进行差异化(例如,rsync与--dry-run选项一起使用),其速度仍然比快得多diff -r。 — Zaz 2014年