![在 shell 中提取特定的 mimetype](https://linux22.com/image/1055758/%E5%9C%A8%20shell%20%E4%B8%AD%E6%8F%90%E5%8F%96%E7%89%B9%E5%AE%9A%E7%9A%84%20mimetype%20.png)
如何从 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 和权限并相应地保存文件。但您必须自己处理所有权和权限,以及文件的临时存储。