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

查看 40|回复 3
作者: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
jayeli   
bsdtar --strip-components=1
sagaxu   
假设 zip 支持这个特性,
zip --strip-components=1 -r top.zip top/ 跟 ( cd top && zip -r ../top.zip ./ ) 有区别?
amrnxcdt   
@sagaxu #2 大概是在批量处理的脚本中可以不切换路径、减少路径到处飞的情况。针对这个情况可以用子进程$(cd && zip)
您需要登录后才可以回帖 登录 | 立即注册

返回顶部