使用shell压缩zip文件中目录中的文件

时间:2015-02-26 14:04:48

标签: linux shell zip

我想将文件从文件系统压缩到新zip存档中的目录或更新旧文件。所以这是我的例子:

directory/
  |-file1.ext
  |-file2.ext
  |-file3.ext
zip存档中的

应该如下所示:

new_directory/
  |-file1.ext
  |-file2.ext
  |-file3.ext

我可以将文件复制到新目录并从那里压缩它们,但我不希望有额外的步骤。我还没有在谷歌找到这个问题的答案。手册页中没有提到类似的东西,所以我希望有人可以帮助我。

1 个答案:

答案 0 :(得分:2)

我不认为zip实用程序支持这种转换。解决方法是使用符号链接:

ln -s directory new_directory
zip -r foo.zip new_directory
rm new_directory

如果其他存档格式是您的选项,那么使用tar存档会更容易一些,因为GNU tar有一个--transform选项,它采用了它应用的sed命令在将文件添加到存档之前的文件名。

在这种情况下,您可以使用(例如)

tar czf foo.tar.gz --transform 's:^directory/:new_directory/:' directory