如何在一个压缩文件和一个未压缩文件上 运行 `diff`? (bash 或 python)
How to run `diff` on one compressed file and one uncompressed file? (bash or python)
我有一些文件,我想看看一个目录中的文件是否与另一个目录中的文件相同。问题是它们被 gzip 压缩在其中一个目录中。据我所知,执行此操作的唯一方法是解压缩所有文件,运行 diff
in bash,然后再次压缩文件。大约有 200 个文件,每个文件大约 5 GB,所以如果可能的话,这不是我想要做的一个选项。
还有其他方法吗?也许在 Python (3) 中?我找到了这个模块:https://docs.python.org/3/library/filecmp.html
我不确定如何将 gzip 文件与常规文件进行比较,因为一个文件将按字节读入,另一个按 unicode 读入?
import gzip, filecmp
path_1 = "path/to/query_1.txt"
path_2 = "path/to/query_2.txt.gz"
在bash
diff path/to/query_1.txt <(zcat path/to/query_2.txt.gz)
<(command)
是一个命令重定向,它将封闭命令的标准输出连接到一个文件名,然后可以在另一个进程中打开和读取该文件名。
普通人看不懂/bin/sh
,但是bash
、zsh
、ksh
都看得懂
我有一些文件,我想看看一个目录中的文件是否与另一个目录中的文件相同。问题是它们被 gzip 压缩在其中一个目录中。据我所知,执行此操作的唯一方法是解压缩所有文件,运行 diff
in bash,然后再次压缩文件。大约有 200 个文件,每个文件大约 5 GB,所以如果可能的话,这不是我想要做的一个选项。
还有其他方法吗?也许在 Python (3) 中?我找到了这个模块:https://docs.python.org/3/library/filecmp.html
我不确定如何将 gzip 文件与常规文件进行比较,因为一个文件将按字节读入,另一个按 unicode 读入?
import gzip, filecmp
path_1 = "path/to/query_1.txt"
path_2 = "path/to/query_2.txt.gz"
在bash
diff path/to/query_1.txt <(zcat path/to/query_2.txt.gz)
<(command)
是一个命令重定向,它将封闭命令的标准输出连接到一个文件名,然后可以在另一个进程中打开和读取该文件名。
普通人看不懂/bin/sh
,但是bash
、zsh
、ksh
都看得懂