初始情况:
.
├── d0
├── f0
├── f1
│ └── d1
└── f2
└── f3
├── d2
├── d3
└── d4
我需要做什么:
我想创建一个包含 d0、d1 和 d4 的 zip,它们必须具有休闲结构:
.
├── d0
├── d1
└── d4
我已经尝试过的:
我试过了zip myfiles d0 f1/d1 f2/f3/d4
。但这保留了原始文件夹结构,这不是我想要的。
.
├── d0
├── f1
│ └── d1
└── f2
└── f3
└── d4
问题 如何创建一个没有子文件夹的包含多个文件的 zip?
您可以使用
find
获取文件列表并执行zip -j myfiles
以忽略路径打包它们:例子
但是,这仅适用于文件,目录将被
zip -j
. 为了让这个也适用于目录,假设我们想要 packd0
,d1
以及上面示例中的整个f3
目录,该find
行变得有点复杂:您可以手动创建 zip 文件并对其进行更新:
括号创建子shell,并且
cd
唯一的效果持续在子shell中,因此您不必cd
回到原始目录。如果
d1
,d2
等实际上是文件而不是目录本身,则使用以下-j
选项:使用 -j 选项将从文件中删除路径。
参考