1

Обычно команда file в linux предоставляет истинный тип файла независимо от того, указано расширение или нет.

Например:

# 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

Это дает длинное описание формата файла, но мне нужен только формат (если это zip, он должен печатать только zip)

Как этого достичь?

1 ответ1

6

Как вы заметили, вывод file по умолчанию немного многословен:

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

Опция -b печать имени файла, и это помогает:

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

Если это слишком много информации, используйте параметр -i чтобы вывести только тип mime и кодировку:

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

Или, если вам просто нужен тип, используйте --mime-type:

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

Список стандартных типов пантомимы можно найти здесь. Слово перед косой чертой может быть application , audio , video или image , среди прочего. Если вы хотите исключить это первое слово из стандарта mime-type, можно использовать cut :

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

Поскольку удаление первого слова из типа mime может оставить некоторую двусмысленность, вероятно, лучше сохранить полный тип mime.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .