如何将 .gz 文件的内容转换为小写

How to convert content of .gz files to lowercase

我有很多 .gz 文件,我需要将这些文件的内容全部转换为小写。我试过了:

tr '[:upper:]' '[:lower:]' < input.gz > output.gz 

但是当我 zcat "output.gz" 我得到这个错误:

zcat: output.gz: invalid compressed data--format violated

我也试过:

dd if=input.gz | gzip -c9 | dd of=output_1.gz conv=lcase

我得到了同样的错误。我哪里做错了,执行此任务的正确方法是什么?

当您通过 tr 提供压缩数据流时,这是行不通的(好吧,它做了一些事情,但绝对不是您想要的)。您需要解压缩文件(例如使用 zcat),执行转换魔术和重新压缩,如下所示:

zcat input.gz | tr '[:upper:]' '[:lower:]' | gzip > output.gz