dak*_*aka 9 command-line archive 7zip wildcards
我想排除以下文件类型:
到目前为止,我有这个似乎不起作用,我收到一条错误消息,说“命令行不正确”。
7z e "-x!*.epub" "-x!*.pdf" "-x!*.html" "-x!*.azw3" "-x!*.mobi" "-x!*.txt" "-x!*.HTML" "-x!*.opf" *
Run Code Online (Sandbox Code Playgroud)
我也试过上面没有双引号的命令。
我使用这里的信息(对于 Windows)创建了上述命令,但它似乎在 Linux 下不起作用。
Ron*_*Ron 12
来自man 7z
:
-x[r[-|0]]]{@listfile|!wildcard}
Exclude filenames
Run Code Online (Sandbox Code Playgroud)
要排除文件(或类型),您可以使用以下命令:
7z a -xr@exclude.txt backup.7z /whatever/dirs/or/files
注意-xr
而不是-x
。该r
指示递归,因此它可以匹配深文件夹层次结构中排除的文件
该文件exclude.txt
是一个由回车分隔的列表,如下所示:
*.epub
*.pdf
*.html
*.HTML
*.azw3
*.mobi
*.opf
*.txt
Run Code Online (Sandbox Code Playgroud)
kos*_*kos 11
7z
仅在其参数中接受单个存档,但您传递的是一个通配符,该通配符扩展到当前工作目录的全部内容;另一个问题是参数中的通配符也会扩展,无论是非引用还是双引号。
所以你应该只为每个命令提取一个存档;您应该删除最后的通配符,指定单个存档并单引号参数:
7z e '-x!*.epub' '-x!*.pdf' '-x!*.html' '-x!*.azw3' '-x!*.mobi' '-x!*.txt' '-x!*.HTML' '-x!*.opf' archive.7z
Run Code Online (Sandbox Code Playgroud)
但是,要一次提取多个档案,您可以使用多种方法:
bash
:7z e '-x!*.epub' '-x!*.pdf' '-x!*.html' '-x!*.azw3' '-x!*.mobi' '-x!*.txt' '-x!*.HTML' '-x!*.opf' archive.7z
Run Code Online (Sandbox Code Playgroud)
find
:for archive in *.7z; do 7z e '-x!*.epub' '-x!*.pdf' '-x!*.html' '-x!*.azw3' '-x!*.mobi' '-x!*.txt' '-x!*.HTML' '-x!*.opf' "$archive"; done
Run Code Online (Sandbox Code Playgroud)