我正在从无法更改目录的脚本调用 zip 命令。我需要data/kit123/
从数据所在的目录中创建一个包含 的内容的 zip 文件,但我希望 zip 的内容仅为 的内容kit123
,并带有相对于 的路径kit123
。
这是目录结构
myworkingdir
data
kit123
kitpart1
file.xcf
anotherfile.xcf
kitpart2
...
kit124
...
我的脚本在 myworkingdir 中运行,无法更改目录。
如果我打电话
zip -r kit123.zip data/kit123
那么 zip 文件的结构将是
data
kit123
kitpart1
file.xcf
anotherfile.xcf
kitpart2
但我希望如此
kit123
kitpart1
file.xcf
anotherfile.xcf
kitpart2
有没有 zip 选项可以用来实现这一点?这似乎很奇怪,它应该取决于我的工作目录
我知道这不是-j。那个破坏了kit123内的结构
答案1
正如您在评论中指出的那样,您现在知道如何使用脚本更改目录,我将解释有关相对路径的 zip 的情况。
打开终端并cd
执行可能是最简单的kit123
方法;您必须将目标目录作为您的工作目录 - 您不能从主目录的基础运行该命令,否则它将获取所有路径。/home/$USER/..
如果您使用该-j
选项,它将删除所有路径,因为实际上没有与 tar 选项等效的选项--strip
可以指定不同级别的路径删除。
因此请 cd 到你的目标目录 ( kit123
) 并输入:
zip -r kit123.zip *
这将以递归方式 ( -r
) 保留*
当前目录 ( ) 中的所有 ( ) 文件和文件目录kit123
,并且由于相对路径 ( -p
) 会自动保留,除非-j
存在该选项,因此目录结构将按照您希望的方式进行。并且将出现包含自己文件的Kit123
子文件夹 ( ):kitpart1
kit123
kitpart1
file.xcf
anotherfile.xcf
kitpart2
您可以使用 检查 zip 文件的内容unzip -l zipfile.zip
。
有关其他可用选项的更多信息zip
,请man zip
参阅Ubuntu 在线手册页。