It is a little shorter to do that using GNU Parallel:
parallel gunzip -c ::: file*.gz > final
but essentially it also writes to temporary files.
Watch the introvideos to learn more: https://www.youtube.com/playlist?list=PL284C9FF2488BC6D1
Можно ли сжать несколько файлов и объединить их в один большой файл, но делать это параллельно на многоядерной машине? Например, сейчас я делаю:
gunzip -c file1.gz > final gunzip -c file2.gz >> final gunzip -c file3.gz >> final gunzip -c file4.gz >> final
Могу ли я сделать то же самое, чтобы обработка разрозненных файлов различными файлами выполнялась в разных процессорах на многоядерном компьютере, и все они были объединены в один и тот же конечный файл?
It is a little shorter to do that using GNU Parallel:
parallel gunzip -c ::: file*.gz > final
but essentially it also writes to temporary files.
Watch the introvideos to learn more: https://www.youtube.com/playlist?list=PL284C9FF2488BC6D1
Вы должны использовать временные файлы для этого:
gunzip -c file1.gz > final & one=$! gunzip -c file2.gz > final2 & two=$! gunzip -c file3.gz > final3 & three=$! gunzip -c file4.gz > final4 & four=$! wait $one && wait $two && wait $three && wait $four cat final2 >> final cat final3 >> final cat final4 >> final
чтобы распаковать части большего файла в один конечный файл, вам необходимо знать распакованный размер частей. только тогда вы можете создать biiiig пустой файл и записать вывод декомпрессии в правильную позицию в большом файле ( dd
например, с). так как вы не знаете распакованный размер (без предварительного распаковывания деталей), это не сработает.