comando de archivo para imprimir solo el formato de un archivo

1

Normalmente, el comando de archivo en Linux proporciona el verdadero tipo de archivo independientemente de si se menciona o no la extensión.

Por ejemplo:

# 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

Esto proporciona una descripción larga del formato de archivo, pero solo necesito el formato (si es un archivo zip, debería imprimir solo el archivo zip)

¿Cómo se puede lograr esto?

FELDAP
fuente

Respuestas:

6

Como habrás notado, la salida de filees, por defecto, un poco detallada:

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

La -bopción suprime la impresión del nombre del archivo y eso ayuda a:

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

Si esa es demasiada información, utilice la -iopción para imprimir solo el tipo y la codificación mime:

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

O, si solo necesita el tipo, use --mime-type:

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

Puede encontrar una lista de tipos mime estándar aquí . La palabra antes de la barra puede ser application, audio, video, o image, entre otros. Si desea eliminar esa primera palabra del estándar de tipo mime, cutpuede usarla:

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

Dado que eliminar la primera palabra del tipo mime puede dejar cierta ambigüedad, probablemente sea mejor mantener el tipo mime completo.

John1024
fuente
1
Impresionante respuesta :) Aprendí algo nuevo hoy.
FELDAP