首页 > 解决方案 > 如何在 Bash 中比较多个无扩展名文件

问题描述

我是 bash shell 脚本的新手。如何比较无扩展名文件的 8 个输出(只有二进制值) - 值的长度相同,0 或 1。为了澄清事情,这就是我到目前为止所做的。

for d in */; do
find . -name base -execdir sh -c 'cat {} >> out' \;
done

我找到了位于子文件夹中的所有文件,将所有二进制文件读取并连接到输出文件中。

现在我有 8 个需要比较的输出文件(8 个父文件夹)。

我已经尝试过“diff”“cmp” ——但它们都只适用于 2 个文件。

最后,我需要检查并验证这 8 个二进制文件之间是否存在差异,并最终导出结果并以 HEX 格式表示它们 - 例如:如果输出文件中的 2 个都是 '1' = F ,并且如果所有 '0' = 0 。因此,最终结果应该是例如:FFFF 0000(4 个第一个文件都是“1”,最后 4 个文件都是“0”)。

这样做的最佳选择是什么?- 希望我已经设法澄清我的情况。

非常感谢您的帮助。

标签: bashshellunix

解决方案


如果您正在查找文件列表中唯一的记录

cat $path/$files|uniq -u>/tmp/output.txt
grep -f /tmp/output.txt $path/$files

推荐阅读