【发布时间】:2015-08-18 15:45:58
【问题描述】:
diff -ur dir1 dir2 | diffstat
这类似于git diff --stat,但diffstat 忽略“仅在目录1”和“仅在目录2”文件,而git diff 分别将其添加到删除和插入计数中。有没有办法让 diffstat 做同样的事情?
【问题讨论】:
标签: linux diff git-diff diffstat
diff -ur dir1 dir2 | diffstat
这类似于git diff --stat,但diffstat 忽略“仅在目录1”和“仅在目录2”文件,而git diff 分别将其添加到删除和插入计数中。有没有办法让 diffstat 做同样的事情?
【问题讨论】:
标签: linux diff git-diff diffstat
更简单:
diff -urN dir1/ dir2/ |diffstat
使用 GNU diff 的 -N 选项,例如,当 comparing directories:
如果只存在一个文件,diff 通常不显示其内容;它仅报告一个文件存在,而另一个文件不存在。您可以使 diff 表现得好像丢失的文件是空的,以便它输出实际存在的文件的全部内容。 (输出为插入或删除,取决于丢失的文件是在第一个还是第二个位置。)为此,请使用
--new-file(-N) 选项。
【讨论】:
diff -ur --exclude=".git" dir1/ dir2/ | grep -i "only in dir1" | awk '{print $3 $4}' | sed 's/\:/\//' | xargs cat | wc -l
我将这个命令的输出与问题中 diffstat 命令吐出的删除(-)计数相加,以获得实际的删除计数,插入(+)计数也是如此。
【讨论】: