我正在从无法更改目录的脚本中调用 zip 命令。我需要data/kit123/从数据所在的目录中制作一个 zip 文件,但我希望 zip 的内容只是 的内容kit123,路径相对于kit123.
这是目录结构
myworkingdir
data
kit123
kitpart1
file.xcf
anotherfile.xcf
kitpart2
...
kit124
...
Run Code Online (Sandbox Code Playgroud)
我的脚本在 myworkingdir 中运行,无法更改目录。
如果我打电话
zip -r kit123.zip data/kit123
Run Code Online (Sandbox Code Playgroud)
那么 zip 文件中的结构将是
data
kit123
kitpart1
file.xcf
anotherfile.xcf
kitpart2
Run Code Online (Sandbox Code Playgroud)
但我希望它是
kit123
kitpart1
file.xcf
anotherfile.xcf
kitpart2
Run Code Online (Sandbox Code Playgroud)
我可以使用 zip 选项来完成此操作吗?它应该取决于我的工作目录似乎很奇怪
我知道这不是 -j。那个破坏了kit123内的结构
小智 28
正如您在评论中注意到的,您现在知道如何使用脚本更改目录,我将使用 zip 解释有关相对路径的情况。
它可能比较容易打开终端cd到kit123; 您必须将目标目录设为您的工作目录 - 您不能从主目录的基础上运行该命令,否则它将获取所有路径/home/$USER/..如果使用该-j选项,它将删除所有路径,因为没有' 不是真正的 tar 选项--strip,可以指定不同级别的路径删除。
因此,请 cd 到您的目标目录 ( kit123) 并输入:
zip -r kit123.zip *
Run Code Online (Sandbox Code Playgroud)
这将递归 ( -r) 保留*当前目录 ( kit123)中的所有 ( ) 文件和文件目录,并且由于相对路径 ( -p) 会自动保留,除非该-j选项存在,否则目录结构将如您所愿。Kit123和子文件夹 ( kitpart1) 将出现它们自己的文件:
kit123
kitpart1
file.xcf
anotherfile.xcf
kitpart2
Run Code Online (Sandbox Code Playgroud)
您可以使用 .zip 文件检查 zip 文件的内容unzip -l zipfile.zip。
有关其他可用选项的更多信息zip,请参阅man zip和Ubuntu 联机帮助页。