Определение типа файла с помощью команды file Linux

Что нужно знать

Используйте команду file, за которой следует имя файла. Для нескольких файлов введите команду file, за которой следуют целевые файлы. Или используйте текстовый редактор для создания файла со списком имен файлов.

В Linux реальный тип файла может отличаться от того, что может означать его расширение.

В Linux не используются расширения файлов; скорее, тип файла является частью имени файла. В этой статье рассказывается, как узнать истинный тип файла в Linux.


Как использовать команду file

Команда file имеет следующий вид:

file filename

Например, чтобы проверить тип файла с названием touch.svg, выполните следующую команду:

file touch.svg

Вывод будет выглядеть примерно так:

touch.svg: SVG Scalable Vector Graphics image

Различные типы файлов дают разные результаты, например:

Тип файлаODS: OpenDocument SpreadsheetPDF тип файла: PDF Document, версия 1.4CSV тип файла: ASCII-текст, с очень длинными строками, с индикаторами строк CRLF

Работа с несколькими файлами

По умолчанию команда file работает с одним файлом. Однако вы можете указать имя файла, содержащее список файлов, которые будут обрабатываться командой file.

Например, откройте файл testfiles с помощью редактора nano и добавьте в него следующие строки:

/etc/passwd/etc/pam.conf/etc/opt

Сохраните файл и выполните следующую команду file:

file -f testfiles

Вывод будет выглядеть примерно так:

/etc/passwd: ASCII текст/etc/pam.conf: ASCII текст/etc/opt: каталог

Другой метод заключается в том, чтобы выполнить команду file один раз, но указать несколько целей. Например:

file /etc/passwd /etc/pam.conf /etc/opt

Вывод будет выглядеть примерно так:

/etc/passwd: ASCII текст/etc/pam.conf: ASCII текст/etc/opt: каталог

Стандартные подстановочные знаки тоже работают. Например, чтобы проверить все файлы в текущем рабочем каталоге, используйте:

file *

Для проверки каталогов, начинающихся с буквы D (с учетом регистра), попробуйте следующее:

file D*

Результатами могут быть, например, Desktop, Documents и Downloads.


Сжатые файлы

При выполнении команды file для сжатого файла вы увидите примерно следующее:

file.zip: Данные архива ZIP, по крайней мере V2.0 для извлечения

Хотя этот результат говорит о том, что файл является архивным, вы не знаете его содержимого. Загляните внутрь zip-файла, чтобы узнать типы файлов внутри сжатого файла. Следующая команда выполняет команду file для проверки файлов внутри ZIP-файла:

file -z filename

Вывод теперь показывает типы файлов в архиве.


Как работает команда file

Команда file выполняет три набора тестов для файла:

Тесты файловой системыМагические тестыТесты языка

Первый набор тестов, вернувший правильный ответ, запрашивает тип файла для печати.

Тесты файловой системы исследуют ответ от системного вызова stat. Программа проверяет, пуст ли файл и является ли он специальным файлом. Если тип файла найден в системном заголовочном файле, он возвращается как допустимый тип файла.

Магические тесты проверяют содержимое файла и, в частности, несколько байтов в начале, которые помогают определить тип файла. Используются различные файлы, помогающие сопоставить файл с его типом, которые хранятся в:

/etc/magic/usr/share/misc/magic.mgc/usr/share/misc/magic

Последним тестом является языковой тест. Файл проверяется на то, является ли он текстовым. Проверяя первые несколько байтов файла, тест определяет, является ли файл ASCII, UTF-8, UTF-16 или другим форматом, который идентифицирует файл как текстовый. Когда набор символов определен, файл проверяется на соответствие различным языкам.

Определите эти файлы, поместив в домашнюю папку файл с именем $HOME/.magic.mgc или $HOME/.magic.

Ваше имя: *
Ваш e-mail: *
Код: Кликните на изображение чтобы обновить код, если он неразборчив
Введите код: