如何创建没有整个目录结构的zip文件

Bra*_*tes 16 linux zip

我正在尝试创建一个zip文件,并希望保留大部分目录结构,但不保留命令行定义的rootdir.我正在使用的命令是:

zip -r out.zip /foo/bar/
Run Code Online (Sandbox Code Playgroud)

我希望它通过bar递归并添加具有保留目录结构的所有文件(它确实如此).但是我不希望'foo'成为创建的zip文件中的顶级目录.我希望bar成为顶级目录.

有什么简单的方法可以解决这个问题吗?我意识到我可以在压缩之前更改目录以避免问题,但我正在寻找一个不需要这个的解决方案.

Cla*_*ser 9

这应该这样做:

cd /foo/bar/ 
zip -r ../out.zip *
Run Code Online (Sandbox Code Playgroud)

档案将在 /foo/out.zip

  • OP表示他不想改变目录. (2认同)
  • 如果您不想更改"真实"shell的目录,请[使用子shell](http://superuser.com/a/271992/229054). (2认同)

kby*_*yrd 8

我不相信zip有办法排除顶级目录.我认为你最好的选择是做一些事情:pushd/foo; zip -r out.zip ./bar; POPD;

但这正是你说你不想要的那种答案.

  • 我怀疑`tar -C/foo/bar -c out.tar*`让他更开心. (2认同)

rei*_*sio 6

7z a -tzip out.zip -w foo/bar/.