У меня есть 2 файла gz, которые мне нужно объединить в один, то есть я хочу объединить два файла .gz в один, чтобы при извлечении объединенного файла я получал один файл, содержащий конкатенацию исходных входных файлов.
time join <(zcat r_TR2_2012-05-28-08-10-00.gz) <(zcat r_TR1_2012-05-28-08-10-00.gz)
Приведенное выше утверждение не работает должным образом. Я использую 3 команды, чтобы сделать необходимое.
gunzip r_TR2_2012-05-28-08-10-00.gz
gunzip r_TR1_2012-05-28-08-10-00.gz
tar -zcvf combined.tar.gz r_TR1_2012-05-28-08-10-00 r_TR2_2012-05-28-08-10-00
а затем объединяю файлы вместе, когда я извлекаю их для получения желаемого результата.
Есть ли способ сделать это в 1 заявлении?
Я думаю, вы имеете в виду:
zcat r_TR2_2012-05-28-08-10-00.gz r_TR1_2012-05-28-08-10-00.gz| gzip -9 > joined.gz
Удивительно то, что Quanta опубликовала в комментариях, работает - по крайней мере, на моем Mac!
$ echo abc > foo
$ echo cba > bar
$ gzip foo
$ gzip bar
$ cat foo.gz bar.gz > baz.gz
$ gunzip baz.gz
$ cat baz
abc
cba
$
Я несколько встревожен, но тоже впечатлен.
Если у вас несколько сжатых файлов .gz
и вам нужно объединить их в один файл, вы можете использовать tar
прямо для этого. Нет необходимости распаковывать и снова сжимать их.
Вы можете попробовать это:
tar cvf combined.gz.tar r_TR1_2012-05-28-08-10-00.gz r_TR2_2012-05-28-08-10-00.gz
Однако вы получите файл с расширением .gz.tar
в отличие от известных .tar.gz
. Чтобы распаковать файл, вы можете попробовать:
tar -xavf combined.gz.tar
Здесь полезен параметр -a (из man tar
):
-a, --auto-compress
use archive suffix to determine the compression program