在 shell 中提取特定的 mimetype

在 shell 中提取特定的 mimetype

如何从 tar 存档中提取文本和可执行文件?我可以使用通配符来做到这一点吗?

答案1

可以使用通配符提取特定文件,但如果不先提取文件,就无法进行基于 mimetype 或权限的过滤。

为了过滤文件,这些选项很有用:

 --exclude=PATTERN
       exclude files, given as a PATTERN

 --null
       -T reads null-terminated names, disable -C

 -T, --files-from FILE
       get names to extract or create from FILE

 --wildcards
       use wildcards (default for exclusion)

 --wildcards-match-slash
       wildcards match '/' (default for exclusion)

 --no-wildcards-match-slash
       wildcards do not match '/'

 --no-wildcards
       verbatim string matching

 -X, --exclude-from FILE
       exclude patterns listed in FILE

例如:

$ tar tf foo.tar 
foo/
foo/c/
foo/c/file
foo/b/
foo/b/text
foo/a/
foo/a/executable
$ cat list.txt
*l*
$ tar tf ../foo.tar --wildcards --no-anchored -T list.txt
foo/c/file
foo/a/executable

l因此,只打印了包含的文件。

对于 mimetype 或权限,tar可以将输出文件写入外部命令.tar通过环境变量提供有关文件名、类型、权限、路径等的信息,然后您可以使用这些信息来检测 mimetype 和权限并相应地保存文件。但您必须自己处理所有权和权限,以及文件的临时存储。

相关内容