Что нужно знать
Используйте команду 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.