gzip文件夹而不更改文件扩展名

时间:2013-09-10 05:04:39

标签: linux gzip

所以我使用亚马逊来提供一些文件。

我希望在上传之前对这些文件进行gzip

首先我将模板复制到新文件夹

cp -r templates/ templatesGZIP

然后我GZIP那个文件夹

gzip -r templatesGZIP

问题是这会将.gz添加到所有文件名中。所以例如homeTemplate.html更改为homeTemplate.html.gz

运行gzip -r templatesGZIP有什么办法,我说我想保持扩展名相同

由于

5 个答案:

答案 0 :(得分:2)

gzip只做一件事,将一个文件转换为gz档案。你需要的是一个tar.gz文件。你的朋友是tar,也可以使用gzip

cp -r templates templatesGZIP
tar czf templatesGZIP.tar.gz templatesGZIP

Backround:tar做得很好:它将目录结构转换为单个文件。上面的tar命令解释了:

  • c = create
  • z =压缩,默认为gzip
  • f FILE =存档文件的名称

答案 1 :(得分:1)

Bash script: Gzip an entire folder and keep files extensions same

这肯定有助于先用gzip压缩它们,然后重命名它们。

谢谢&问候,
阿洛克

答案 2 :(得分:0)

您可以使用stdout作为临时缓冲区,并将输出写入您选择的文件中:

gzip -cr templatesGZIP > outputfile.extension

答案 3 :(得分:0)

gzip中没有选项可以执行此操作。使用双目录方法,以下应该做的伎俩

for in_file in $(find templates -type f)
do
    out_file="templatesGZIP/${in_file#templates/}"
    mkdir -p "$(dirname "$out_file")"
    gzip -c <"$in_file" >"$out_file"
done

使用此方法,不需要cp命令。

这已经过测试。

对此有一点评论 - 看到没有扩展名的gzip文件并不常见。

答案 4 :(得分:0)

复制目录后

find templatesGZIP -type f ! -wholename *images* -exec gzip {} \; -exec mv {}.gz {} \;