使用 shell 压缩 zip 文件中目录中的文件
Compress files in a directory in a zip file with the shell
我想将文件系统中的文件压缩到新的 zip 存档中的目录或更新旧的。所以这是我的例子:
directory/
|-file1.ext
|-file2.ext
|-file3.ext
在 zip 存档中它应该如下所示:
new_directory/
|-file1.ext
|-file2.ext
|-file3.ext
我可以将文件复制到一个新目录并从那里压缩它们,但我不想有那个额外的步骤。我还没有在 google 上找到该问题的答案。手册页也没有提到类似的内容,所以我希望有人能帮助我。
我认为 zip
实用程序不支持这种转换。解决方法是使用符号 link:
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
我想将文件系统中的文件压缩到新的 zip 存档中的目录或更新旧的。所以这是我的例子:
directory/
|-file1.ext
|-file2.ext
|-file3.ext
在 zip 存档中它应该如下所示:
new_directory/
|-file1.ext
|-file2.ext
|-file3.ext
我可以将文件复制到一个新目录并从那里压缩它们,但我不想有那个额外的步骤。我还没有在 google 上找到该问题的答案。手册页也没有提到类似的内容,所以我希望有人能帮助我。
我认为 zip
实用程序不支持这种转换。解决方法是使用符号 link:
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