我正在递归地传播一堆二进制文件。
基本上,我正在跑步:
diff --recursive --brief dir_a dir_b
这告诉我哪些文件不同,哪些只存在于其中一个位置。
我想获得更多信息,粗略地说,它们彼此有多少不同。百分比可以。
有没有简单,单一,相对快速的方法来做到这一点?
所以,大多数响应者都想知道我是如何计算百分比的,答案非常多,我不在乎。我正在考虑两个文件的复合大小的差异大小的行。但是,如果那里有其他使用不同指标的东西,我就会接受它。我只需要一个粗略的价值。
git
倾向于为提交显示某种差异百分比,任何想法指标会在这里?
答案 0 :(得分:1)
由于您正在分叉二进制文件,diff
或diffstat
不是很有用。 “差异”的概念也不像面向行的文本文件那样清晰。
答案 1 :(得分:1)
我猜这个脚本会打印某种百分比。
#!/bin/sh file1="$1" file2="$2" file1size=$( cat $file1 | wc -c ) file2size=$( cat $file2 | wc -c ) if [ $file1size -lt $file2size ]; then size=$file1size else size=$file2size fi dc -e " 3k $( cmp -n $size -l $file1 $file2 | wc -l ) $size / 100* p"
答案 2 :(得分:0)
我不确定您希望如何衡量百分比。但是,您可以编写一个脚本来读取diff
命令的输出,并以某种方式计算百分比。但首先您需要知道要使用的指标。
答案 3 :(得分:0)
查找程序“diffstat”。它会给你一个更好的主意。
答案 4 :(得分:0)
不完全确定如何定义“多少不同”,但您可以计算每个目录中的项目数并除以总计以获得百分比
# diff -r /tmp /home | awk -F":" '{_[$1]++}END{for(i in _) print _[i],i}'
74 Only in /tmp
29 Only in /home
以上只是打印出数字。自己定义一个指标。