在 Linux 中,假设我在当前文件夹中有一些文件,例如
./folder/file1
./file2
./file3
我希望将它们压缩,但在 zip 文件内,它们应该生成在子文件夹中:
./custom/folder/file1
./custom/file2
./custom/file3
是否可以不必先将此类文件复制到“custom”文件夹中,然后再删除“custom”?
您可以使用以下网址解释的技术 https://superuser.com/questions/1750334/create-zip-archive-with-path-prefix。
为了展示它是如何工作的,我们首先重新创建示例目录 使用 Bash 的结构:
$ mkdir folder folder{2,3}
$ touch folder/file1
$ tree
.
├── folder
│ └── file1
├── folder2
└── folder3
4 directories, 1 file
使用
bsdtar
:
$ bsdtar -c -a -f foo.zip -s ",^,custom/," *
检查 foo.zip 的内容:
$ unzip -l foo.zip
Archive: foo.zip
Length Date Time Name
--------- ---------- ----- ----
0 11-16-2024 19:30 custom/folder/
0 11-16-2024 19:30 custom/folder/file1
0 11-16-2024 19:27 custom/folder2/
0 11-16-2024 19:27 custom/folder3/
--------- -------
0 4 files