É possível extrair arquivos específicos usando curingas, mas a filtragem baseada em mimetype ou permissão não pode ser feita sem a extração do arquivo primeiro.
Para filtrar os arquivos, essas opções são úteis:
--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
Por exemplo:
$ 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
Portanto, apenas os arquivos contendo l
foram impressos.
Para o tipo MIME ou permissões, tar
pode gravar o arquivo de saída em um comando externo . tar
fornece informações através de variáveis de ambiente sobre o nome do arquivo, tipo, permissões, caminho, etc., que você pode usar para detectar o tipo MIME e as permissões e salvar o arquivo de acordo. Mas você também precisa cuidar da propriedade e da permissão, além do armazenamento temporário do arquivo.