me.txt
我创建了一个以文本命名的文件
This is dummy text
然后我用它制作了一个 TAR 并命名为me.txt.tar
.
一分钟后,我再次创建了一个名称和文本完全相同的文件(基本上我就是这样做的touch me.txt
),然后将其制成名为 .tar 的 TAR 文件me2.txt.tar
。
从技术上讲,两个 tars 都具有相同的文件和相同的文件内容,但文件的创建时间me.txt
不同。但 diff 工具说:
Binary files me.txt.tar and me2.txt.tar differ
这是因为文件创建的时间戳差异的原因。但我只想比较文件的内容,并且需要忽略时间戳,因此我期望差异没有输出。
请帮助我忽略 TAR 或 JAR 等文件内的文件的时间戳,因为我关心的是文件的内容。
- 我使用的命令是:
$ echo "This is dummy text" > me.txt $ tar -cvf me.txt.tar me.txt (After 1 minute or so..) $ touch me.txt $ tar -cvf me2.txt.tar me.txt $ diff me.txt.tar me2.txt.tar
- 输出:
Binary files me.txt.tar and me2.txt.tar differ
甚至diffoscope
给出类似的输出。
答案1
由于您想要比较存档中文件的内容,而不是存档本身中的元数据,因此您应该比较内容。假设所有档案中的文件以相同的顺序存储,
diff -u <(tar xOf me.txt.tar) <(tar xOf me2.txt.tar)
对于 JAR,您可以使用unzip
:
diff -u <(unzip -c file1.jar) <(unzip -c file2.jar)