3

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

我想在上传这些文件之前先压缩它们

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

cp -r templates/ templatesGZIP

然后我 GZIP 那个文件夹

gzip -r templatesGZIP

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

运行 gzip -r templatesGZIP 时有什么方法我声明我想保持扩展相同

谢谢

4

5 回答 5

3

Bash 脚本:Gzip 整个文件夹并保持文件扩展名相同

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

谢谢和问候,
阿洛克

于 2013-09-10T05:20:43.623 回答
2

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

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

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

  • c = 创建
  • z = 压缩,默认 gzip
  • f FILE = 存档文件的名称
于 2013-09-10T05:10:49.667 回答
1

复制目录后

find templatesGZIP -type f ! -wholename *images* -exec gzip {} \; -exec mv {}.gz {} \;
于 2013-09-10T06:02:14.177 回答
0

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

gzip -cr templatesGZIP > outputfile.extension
于 2013-09-10T05:12:19.637 回答
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 文件。

于 2013-09-10T05:20:03.217 回答