gpt4 book ai didi

unix - 在 unix 命令行上比较文件

转载 作者:行者123 更新时间:2023-12-04 23:34:09 24 4
gpt4 key购买 nike

假设我有两个文件,A 和 B,并且 lengthOf(A) < lengthOf(B)。是否有 unix 实用程序来判断文件 B 是否在第一个 lengthOf(A) 字节中复制了文件 A?

如果我执行“diff A B”,输出将是 B 文件中的所有“额外内容”,这没有捕获要点;我不在乎文件 B 中还有什么。

如果我执行“comm A B”,那么我必须目视检查列中是否没有“仅在 A”中出现任何内容。当 lengthOf(B) >> lengthOf(A) 时,这可能很困难,尽管我认为它可以用 grep 驯服。

最佳答案

这似乎比创建临时文件要好得多:

SIZE=`stat -c %s filea`
cmp -s -n $SIZE filea fileb # -s for silence

检查退出状态以查看这些文件的第一个字节是否确实相等。

更新:根据 xk0der 的要求,这里有一个更长的例子:
wormhole:tmp admp$ echo -n "fooa" > one # -n to supress newline
wormhole:tmp admp$ echo -n "foobc" > two
wormhole:tmp admp$ SIZE=`stat -c %s one`
wormhole:tmp admp$ echo $SIZE
4
wormhole:tmp admp$ (cmp -s -n $SIZE one two && echo "equal") || echo "not equal"
not equal
wormhole:tmp admp$ echo -n "fooac" > two # first 4 bytes are equal now
wormhole:tmp admp$ (cmp -s -n $SIZE one two && echo "equal") || echo "not equal"
equal

此外,在 MacOS X 中,您必须使用:
SIZE=`stat -f %z filename`

关于unix - 在 unix 命令行上比较文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/951347/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com