使用 7-Zip 命令行归档文件和目录,一些是递归的,一些是非递归的?

Archive files and dirs, some recursively, some non-recursively, using 7-Zip command line?

我想用 7-Zip 命令行归档一堆文件和目录,作为 shell 脚本执行(bash shell 在 Ubuntu 19.04 服务器)。

在我的主目录中,有两个子目录:foobar

foobar 目录都包含子目录,例如目录结构是这样的:

foo
 foo/abc
 foo/pqrs
 foo/etc...
bar
 bar/xyz
 bar/temp
 bar/etc...

我想创建一个 7z 存档:

我可以单独做这个,但是有没有办法一次性完成这个,也许使用@filelist.txt结构?

perhaps using a @filelist.txt construction?

使用通配符对我来说似乎更容易。例如:

7z a -x'!bar/*/' my_archive.7z foo bar

我提出的第一个解决方案是:

find foo bar \
     ! \( -type d -path 'bar/*' -prune \) \
     -type f \
     -exec 7z a 'my_archive.7z' {} +

除了存档索引中没有目录条目外,这几乎是一样的。