7zip:如何排除文件类型?


9

我要排除以下文件类型:

  • epub
  • pdf格式
  • html(也是大写)
  • azw3
  • 摩比
  • opf
  • 文本文件

到目前为止,我似乎没有用,我收到一条错误消息:“命令行不正确”。

7z e "-x!*.epub" "-x!*.pdf" "-x!*.html" "-x!*.azw3" "-x!*.mobi" "-x!*.txt" "-x!*.HTML" "-x!*.opf" *

我也尝试了不带双引号的上述命令。

我使用此处的信息(适用于Windows)创建了上述命令,但在Linux下似乎不起作用。

Answers:


10

7z仅在其参数内接受单个存档,但是您传递的通配符将扩展为当前工作目录的全部内容;另一个问题是,参数中的通配符也会扩展,无论是未引用还是双引号。

因此,每个命令只应提取一个归档文件。您应该在最后删除通配符,指定单个归档文件并用引号将参数引起来:

7z e '-x!*.epub' '-x!*.pdf' '-x!*.html' '-x!*.azw3' '-x!*.mobi' '-x!*.txt' '-x!*.HTML' '-x!*.opf' archive.7z

要一次提取多个档案,可以使用多种方法:

  • bash
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
  • find
find . -maxdepth 1 -type f -iname "*.7z" -exec 7z e '-x!*.epub' '-x!*.pdf' '-x!*.html' '-x!*.azw3' '-x!*.mobi' '-x!*.txt' '-x!*.HTML' '-x!*.opf' {} \;

我有很多需要提取的档案,因此最后使用通配符提取所有档案。
达卡

@sudoman您确定这受支持7z吗?介意尝试使用单个存档吗?
kos 2015年

经过测试,事实证明7zip实际上不允许使用通配符在给定目录中选择多个文件。
达卡

@Ron我同意,但是这里的问题是OP无法一次提取多个存档;然而upvoted您的文章
科斯

@sudoman我发现在你的原始命令另一个缺陷,再加上我增加了几个方法来提取多个存档一次
科斯

10

来自man 7z

-x[r[-|0]]]{@listfile|!wildcard}
              Exclude filenames

要排除文件(或类型),可以使用以下命令:

7z a -xr@exclude.txt backup.7z /whatever/dirs/or/files

请注意,-xr而不要注意-x。该r指示递归,因此它可以匹配深文件夹层次结构中排除的文件

该文件exclude.txt是一个由回车分隔的列表,如下所示:

*.epub
*.pdf
*.html 
*.HTML
*.azw3
*.mobi
*.opf
*.txt

-2

如果要排除整个目录(您可能将此扩展文件放在目录中)

 7z a -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=on ~/bkpFile_$(date +"%d_%b_%Y").1.7z /home/ubuntu/projectfile -mx0 '-xr!vendor' '-xr!view' '-xr!documents' 

在这里,vendorviewdocuments目录已被排除。


1
为什么sudo呢 这对现有答案有什么补充?
大师
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.