如果只用 zip 命令,似乎没有办法不进入某个目录而仅压缩该目录下的内容(不希望包括该目录名)

122 天前
 zhwguest

不考虑 7z 等其他可取代的命令。

$ tree top
top
├── a.txt
└── b
    └── b.txt

假设我想将 top 下面的两个文件(a.txt, b/b.txt)和一个文件夹(b/)打包到一个 zip 文件,我只能进入这个 top 目录然后再进行压缩:

$ cd top
$ zip -r ../top.zip ./

如果我想在 top 目录之外进行压缩:

$ zip -r top.zip top/

则怎么都不行,-j参数将所有的目录(比如 b/)都去除了。

我期望的 zip entry 是:

a.txt
b/b.txt

不希望是:

top/a.txt
top/b/b.txt
1401 次点击
所在节点    程序员
7 条回复
jayeli
122 天前
bsdtar --strip-components=1
sagaxu
122 天前
假设 zip 支持这个特性,
zip --strip-components=1 -r top.zip top/ 跟 ( cd top && zip -r ../top.zip ./ ) 有区别?
amrnxcdt
122 天前
@sagaxu #2 大概是在批量处理的脚本中可以不切换路径、减少路径到处飞的情况。针对这个情况可以用子进程$(cd && zip)
yukafans
122 天前
popd
ltux
122 天前
zip 不支持你说的特性。
proxytoworld
122 天前
pushd
cd
popd
zhwguest
122 天前
谢谢大家的回复,感谢 @ltux 确认了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1066816

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX