7z 不从排除文件中排除目录

7z 不从排除文件中排除目录

在 bash 脚本中,我想使用 7z 创建一个存档并排除一些目录。我创建了一个仅包含一项的排除文件:

excl_dir/

我的脚本:

#!/bin/bash
archiveName="my_archive"
base="/path/to/base"

7z a -mx=9 -t7z [email protected] "${archiveName}.7z" "${base}/files/*"

存档已创建,但使用排除文件中的目录。

我考虑过的事情:

  • 排除文件是 UTF-8 编码的
  • 排除文件与我的脚本位于同一目录中
  • 我尝试了绝对路径和相对路径(即/path/to/exclude.lst./exclude.lst
  • 排除文件格式:excl_dir/, excl_dir/*, 条目后换行

排除文件中的条目是否正确?如果是的话,还有什么问题吗?

编辑:

当 except.lst 中的条目仅为 时excl_dir,7z 实际上会排除该文件夹。而且名称中包含此字符串的每个文件也是如此。

答案1

它看起来7z只能排除模式并忽略尾部斜杠。作为解决方法,不要排除,而是向其传递要包含的文件列表:

find . -not -path './excl_dir/*' -not -path './excl_dir' > /tmp/include.lst
7z a -mx=9 -t7z -i@/tmp/include.lst foo.7z 

这似乎是 中的一个错误7z

相关内容