Gzip 在 unix 中的文件

Gzip the files in unix

我有一个名为 Apple_PC.csv 的文件 我需要对其进行 gzip 压缩,文件名将是:Apple_PC_<yyyymmddhhmmss>.gz 但是当它解压缩时它应该有原始文件:Apple_PC.csv

试过这个:

   gzip -q  /users/files/Apple_PC_$(date +%Y%m%d%H%M%S).gzip /users/files/Apple_PC.csv

它给我错误

gzip: Apple_PC_20171212105127.gzip: No such file or directory

我不希望我的目录中的原始文件 (Apple_PC.csv) 在 gzip 成功后可用。 不确定我在这里遗漏了什么。

只需压缩然后移动即可。

gzip /users/files/Apple_PC.csv &&
    mv /users/files/Apple_PC.csv.gz \
       /users/files/Apple_PC_$(date +%Y%m%d%H%M%S).gzip

我要补充一点,gzip使用压缩文件的文件名来生成解压文件的名称,所以你应该照做。你需要重命名它进出。 .gzip 将不起作用。这可能就是您所需要的。

gzip /users/files/Apple_PC.csv && 
    mv /users/files/Apple_PC.csv.gz \
       /users/files/Apple_PC_$(date +%Y%m%d%H%M%S).gz
# then to decompress
mv /users/files/Apple_PC_$(# match date here).gz \
   /users/files/Apple_PC.csv.gz &&
       gzip -d /users/files/Apple_PC.csv.gz

或者,您可以使用 stdin 和 stdout 而不是移动文件,但这可能完全是另一个话题。

还有一个 --name 选项用于保留原始文件名,但我不确定它的便携性如何。