Bash 为从stdout生成的zip存档中的文件命名

Bash 为从stdout生成的zip存档中的文件命名,bash,postgresql,gzip,Bash,Postgresql,Gzip,我正在用python脚本运行postgresql查询 copy (SELECT * FROM table) TO PROGRAM 'gzip > ./" + file_from + "' with csv HEADER; 生成的zip文件具有预期的名称,但zip存档中的文件没有扩展名,它与zipfile的扩展名相同,但没有“.zip”扩展名。我希望在文件名中添加“.csv”扩展名,而无需执行复杂的操作(例如解压缩、重命名、压缩) 提前感谢您。Gzip不像pkzip那样

我正在用python脚本运行postgresql查询

copy (SELECT * FROM table) TO PROGRAM 'gzip > ./" + file_from + "' with csv HEADER;
生成的zip文件具有预期的名称,但zip存档中的文件没有扩展名,它与zipfile的扩展名相同,但没有“.zip”扩展名。我希望在文件名中添加“.csv”扩展名,而无需执行复杂的操作(例如解压缩、重命名、压缩)


提前感谢您。

Gzip不像pkzip那样创建归档


如果将gzip的输出发送到
datadump.csv.gz
,则对其运行
gunzip
,将其解压缩到名为
datadump.csv
的文件中,但这只是一个遵循约定的方便功能,对文件中的实际内容没有影响。

假设您想使用“gzip”,惯例是创建并使用“.csv.gz”作为后缀。对文件使用“gunzip”将生成filename.csv

如果出现上述示例,请将文件名设置为“which.csv.gz”


使用ZIP格式稍微复杂一些,因为ZIP可以更好地处理文件。等效的命令将是
zip whatever.zip-
进行压缩,以及“funzip whatever.zip>whatever.csv”取消压缩

gzip不是zip。zip不是gzip。gzip文件不是归档文件——它只是一个压缩文件。gzip没有添加“.zip”扩展名。它加了“.gz”。你的问题没有道理。