Определите тип файла с помощью команды Linux file
Большинство людей смотрят на расширение файла а затем угадать тип файла по этому расширению. Например, когда вы видите файл с расширением gif, jpg, bmp или png, вы думаете о файл изображения, и когда вы видите файл с расширением zip, вы предполагаете, что файл был сжат с использованием утилита сжатия zip.
Файл может иметь одно расширение, но быть совершенно другим. Linux не использует расширения файлов; скорее, тип файла является частью имени файла. Чтобы узнать истинный тип файла, используйте файл команда.
Как работает команда file
Команда file запускает три набора тестов для файла:
- Тесты файловой системы
- Магические тесты
- Языковые тесты
Первый набор тестов, возвращающих действительный ответ, предлагает напечатать тип файла.
Тесты файловой системы проверяют результат системного вызова stat. Программа проверяет, является ли файл пустым и является ли это специальным файлом. Если тип файла найден в файле системного заголовка, он возвращается как допустимый тип файла.
Магические тесты проверяют содержимое файла и, в частности, несколько байтов в начале, которые помогают определить тип файла. Различные файлы используются, чтобы помочь сопоставить файл с его типом, и они хранятся в:
- /etc/magic
- /usr/share/misc/magic.mgc
- /usr/share/misc/magic
Переопределите эти файлы, поместив файл в вашу домашнюю папку с именем $ HOME / .magic.mgc или $ HOME / .magic.
Заключительные тесты - это языковые тесты. Файл проверяется, является ли это текстовым файлом. Проверяя первые несколько байтов файла, тест определяет, является ли файл форматом ASCII, UTF-8, UTF-16 или другим форматом, который идентифицирует файл как текстовый. Когда набор символов выводится, файл тестируется на разных языках.
Как использовать команду file
В файл команда принимает следующий вид:
файл имя файла.
Например, чтобы проверить тип названия файла touch.svgвыполните следующую команду:
файл touch.svg.
Результат будет примерно таким:
- touch.svg: изображение в формате SVG с масштабируемой векторной графикой.
Разные типы файлов дают разные результаты, например:
- Тип файла ODS: Таблица OpenDocument
- Тип файла PDF: PDF-документ, версия 1.4
- Тип файла CSV: Текст ASCII, с очень длинными строками, с индикаторами строк CRLF.
Работа с несколькими файлами
По умолчанию команда file работает с одним файлом. Однако вы можете указать имя файла, содержащее список файлов, которые будут обрабатываться файл команда.
Например, откройте файл с именем тестовые файлы с помощью редактор нано и добавьте к нему эти строки:
- /etc/passwd
- /etc/pam.conf
- /etc/opt
Сохраните файл и выполните следующую файловую команду:
файл -f testfiles.
Результат будет примерно таким:
- / etc / passwd: текст ASCII
- /etc/pam.conf: текст ASCII
- / etc / opt: каталог
Другой способ - запустить файл команду один раз, но с указанием нескольких целей. Например:
файл / etc / passwd /etc/pam.conf / etc / opt
Результат будет примерно таким:
- / etc / passwd: текст ASCII
- /etc/pam.conf: текст ASCII
- / etc / opt: каталог
Стандартные подстановочные знаки тоже работают. Например, чтобы протестировать все файлы в текущем рабочем каталоге, используйте:
файл *
Чтобы проверить каталоги, начинающиеся с буквы D (с учетом регистра), попробуйте следующее:
файл D *
Результатами могут быть, например, Рабочий стол, Документы и Загрузки.
Сжатые файлы
Когда вы запускаете файл команды для сжатого файла вы увидите что-то вроде этого:
- file.zip: данные архива ZIP, по крайней мере, V2.0 для извлечения
Хотя этот результат говорит вам, что файл является архивным, вы не знаете его содержимое. Загляните внутрь zip-файла, чтобы увидеть типы файлов в сжатом файле. Следующая команда запускает команду file для файлов внутри ZIP-файла:
файл -z имя_файла.
Теперь выходные данные показывают типы файлов файлов в архиве.