file comando para imprimir apenas o formato de um arquivo

1

Normalmente, o comando file no linux fornece o verdadeiro tipo de arquivo do arquivo, independentemente de a extensão ser mencionada ou não.

Por exemplo:

# file cntlm-0.92.3-1.x86_64.rpm
cntlm-0.92.3-1.x86_64.rpm: RPM v3.0 bin i386/x86_64 cntlm-0.92.3-1

# file zip-pack
zip-pack: Zip archive data, at least v2.0 to extract

Isto dá uma longa descrição do formato do arquivo, mas eu preciso apenas do formato (se for um zip, ele deve imprimir somente o zip)

Como isso pode ser alcançado?

    
por FELDAP 07.09.2016 / 06:32

1 resposta

6

Como você percebeu, a saída de file é, por padrão, um pouco detalhada:

$ file some.pdf
some.pdf: PDF document, version 1.4

A opção -b suprime a impressão do nome do arquivo e isso ajuda:

$ file -b some.pdf
PDF document, version 1.4

Se isso for muita informação, use a opção -i para imprimir apenas o tipo e a codificação do mime:

$ file -bi some.pdf
application/pdf; charset=binary

Ou, se você só precisar do tipo, use --mime-type :

$ file -b --mime-type some.pdf
application/pdf

Uma lista de tipos mime padrão pode ser encontrada aqui . A palavra antes da barra pode ser application , audio , video ou image , entre outras. Se você quiser eliminar a primeira palavra do padrão de tipo mime, cut pode ser usado:

$ file -b --mime-type some.pdf | cut -d/ -f2-
pdf

Como a remoção da primeira palavra do tipo mime pode deixar alguma ambiguidade, provavelmente é melhor manter o tipo mime completo.

    
por 07.09.2016 / 06:58