Как запустить `diff` для одного сжатого файла и одного несжатого файла? (bash или python) - PullRequest
1 голос
/ 03 апреля 2020

У меня есть несколько файлов, и я хочу посмотреть, совпадают ли файлы в одном каталоге с файлами в другом каталоге. Проблема в том, что они находятся в одном из каталогов. Единственный известный мне способ сделать это - распаковать их все, запустить diff в bash, а затем снова сжать файл. Там ~ 200 файлов, каждый размером около 5 ГБ, поэтому я не хочу делать это, если это возможно.

Есть ли другой способ сделать это? Возможно в Python (3)? Я нашел этот модуль: https://docs.python.org/3/library/filecmp.html

Я не уверен, как я могу сравнить файл gzip с обычным файлом, так как один будет считан как байты, а другой как юникод?

import gzip, filecmp

path_1 = "path/to/query_1.txt"
path_2 = "path/to/query_2.txt.gz"

1 Ответ

2 голосов
/ 03 апреля 2020

In bash

diff path/to/query_1.txt <(zcat path/to/query_2.txt.gz)

<(command) - это перенаправление команды, которое соединяет стандартный вывод вложенной команды с именем файла, которое затем можно открыть и прочитать из другого процесса.

Это не понято голыми костями /bin/sh, но bash, zsh и ksh все это понимают.

...