- Как определить тип файла файла с помощью Linux
- Найдите тип файла любого файла или группы файлов с помощью команды FILE
- Как работает команда File
- Как использовать команду «Файл»
- Настройте вывод из команды File
- Обработка нескольких файлов
- Сжатые файлы
- Определить тип архива linux
- Примеры использования
- Простое исследование типов файлов
- Исследование типов файлов из директории
- Исследование типов файлов из архива
- Как узнать типы файлов в Linux
Как определить тип файла файла с помощью Linux
Найдите тип файла любого файла или группы файлов с помощью команды FILE
Большинство людей смотрят на расширение файла, а затем угадывают тип файла с этим расширением. Например, когда вы видите файл с расширением gif, jpg, bmp или png, вы думаете о файле изображения, а когда вы видите файл с расширением zip, вы предполагаете, что файл был сжат с помощью утилиты сжатия zip ,
В действительности, файл может иметь одно расширение, но быть чем-то совершенно другим. В Linux вы узнаете истинный тип файла с помощью команды file .
Как работает команда 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 может быть использована следующим образом:
Например, представьте, что у вас есть файл с именем file1, и вы запускаете следующую команду:
file1: данные изображения PNG, 640 x 341, 8-битный/цветной RGB, без чересстрочной развертки
Выходные данные определяют, что file1 – это файл изображения или, точнее, файл переносимой сетевой графики (PNG).
Различные типы файлов дают разные результаты:
- Тип файла ODS : электронная таблица OpenDocument
- Тип файла PDF : документ PDF, версия 1.4
- Тип файла CSV : текст ASCII, с очень длинными строками, с индикаторами строк CRLF
Настройте вывод из команды File
По умолчанию команда file предоставляет имя файла и все детали над файлом. Если вы хотите, чтобы только детали без имени файла повторялись, используйте следующий переключатель:
Данные изображения PNG, 640 x 341, 8-битный/цветной RGB, без чередования
Вы также можете изменить разделитель между именем файла и типом. По умолчанию в качестве разделителя используется двоеточие, но вы можете изменить его на что угодно, например на символ канала, следующим образом:
file1 | Данные изображения PNG, 640 x 341, 8-битный/цветной RGB, без чередования
Обработка нескольких файлов
По умолчанию вы используете команду file для одного файла. Однако вы можете указать имя файла, которое содержит список файлов, которые будут обработаны командой file.
Например, откройте файл с именем testfiles с помощью редактора nano и добавьте в него следующие строки:
Сохраните файл и выполните следующую команду:
Результат будет примерно таким:
Сжатые файлы
По умолчанию, когда вы запускаете команду file для сжатого файла, вы видите что-то вроде этого:
file.zip: данные архива ZIP, по крайней мере V2.0 для извлечения
Хотя это говорит о том, что файл является архивом, вы не знаете его содержимого. Вы можете заглянуть внутрь zip-файла, чтобы увидеть типы файлов в сжатом файле. Следующая команда запускает команду file для файлов внутри ZIP-файла:
Вывод теперь показывает типы файлов файлов в архиве.
Большинство людей используют команду file, чтобы найти основной тип файла.Чтобы узнать больше о возможностях, которые предлагает команда file, введите в окне терминала следующее:
Эта команда открывает документацию по программному обеспечению Linux, включенную в систему.
Определить тип архива linux
Команда file предназначена для задействования одноименной утилиты, осуществляющей определение типов переданных элементов файловой системы (файлов, директорий, ссылок, именованных каналов и сокетов). Данная утилита исследует содержимое файлов, а не ограничивается проверкой их расширений.
Если говорить конкретно, утилита выполняет до трех проверок каждого из указанных пользователем элементов файловой системы. Первая проверка заключается в использовании системного вызова stat(), позволяющего получить доступ к содержимому структуры inode элемента файловой системы. Системный вызов обрабатывается ядром операционной системы и позволяет выяснить, является ли элемент файловой системы обычным файлом, директорией, символьной или жесткой ссылкой, именованным каналом или сокетом.
Если элемент файловой системы является обычным файлом или символьной или жесткой ссылкой, утилита читает заголовок файла и пытается идентифицировать его тип на основе магической последовательности байтов.
В том случае, если файл не содержит магической последовательности байтов, определяется тип содержимого файла. Эта проверка, к примеру, позволяет выяснить, является ли файл обычным текстовым файлом, файлом формата HTML или файлом исходного кода. Кроме того, утилита пытается распаковать файл архива и выяснить тип сжатого файла.
Базовый синтаксис команды выглядит следующим образом:
Обычно утилита используется без каких-либо параметров, вместо имен файлов могут использоваться шаблоны. Параметр -k позволяет принудительно выполнить все проверки для получения максимального объема информации об объектах файловой системы. Параметр -b позволяет не выводить имена исследуемых объектов файловой системы, что полезно в случае сбора статистики о типах файлов. Параметр -F позволяет указать символ-разделитель имени файла и строки с информацией о его типе. Параметр -f предназначен для передачи утилите имени текстового файла в строках которого приводятся имена объектов файловой системы, которые необходимо исследовать. Если вам нужны MIME-типы файлов, а не описания их типов, вы можете воспользоваться параметром -i. Для того, чтобы не обновлять метку времени доступа к объектам файловой системы может использоваться параметр -p. Для исследования содержимого сжатых файлов может использоваться параметр -z.
Примеры использования
Простое исследование типов файлов
Для простого исследования типов файлов достаточно передать имена этих файлов утилите без использования каких-либо параметров:
$ file splash1280.jpg
splash1280.jpg: JPEG image data, JFIF standard 1.02, resolution (DPI), density 72×72, segment length 16, progressive, precision 8, 1280×1024, frames 3
$ file audiobook.ogg
audiobook.ogg: Ogg data, Vorbis audio, mono, 24000 Hz, ~40222 bps, created by: Xiph.Org libVorbis I
$ file file1.txt
file1.txt: ASCII text
$ file switchcase.c
switchcase.c: C source, UTF-8 Unicode text
$ file text.txt.bz2
text.txt.bz2: bzip2 compressed data, block size = 900k
$ file debian.patch
debian.patch: unified diff output, UTF-8 Unicode text
$ file /tmp/
/tmp/: sticky, directory
$ file /tmp/.ICE-unix/1558
/tmp/.ICE-unix/1558: socket
$ file /usr/lib/libnetpbm.so.10
/usr/lib/libnetpbm.so.10: symbolic link to libnetpbm.so.10.0
Исследование типов файлов из директории
Утилита file может обрабатывать множества файлов. Для этого достаточно использовать шаблоны командной оболочки:
$ file *.jpg
nolf228.jpg: JPEG image data, JFIF standard 1.02, resolution (DPI), density 72×72, segment length 16, progressive, precision 8, 800×600, frames 3
other: directory
splash1024.jpg: JPEG image data, JFIF standard 1.02, resolution (DPI), density 72×72, segment length 16, progressive, precision 8, 1024×768, frames 3
splash1280.jpg: JPEG image data, JFIF standard 1.02, resolution (DPI), density 72×72, segment length 16, progressive, precision 8, 1280×1024, frames 3
Исследование типов файлов из архива
Утилита может выводить информацию о типе первого файла из архива в случае использования параметра -z:
$ file splash.zip
splash.zip: Zip archive data, at least v2.0 to extract
$ file -z splash.zip
splash.zip: JPEG image data, JFIF standard 1.02, resolution (DPI), density 72×72, segment length 16, progressive, precision 8, 800×600, frames 3 (Zip archive data, at least v2.0 to extract)
Как узнать типы файлов в Linux
Самый простой способ определить тип файла в любой операционной системе — обычно посмотреть на его расширение (например, .xml, .sh, .c -f , как показано ниже.
3. Чтобы файл работал быстрее, вы можете исключить тест (действительные тесты включают тип приложения, ascii, кодировку, токены, cdf, сжатие, эльф, софт и tar) из списка тестов, выполненных для определения тип файла, используйте флаг -e , как показано ниже.
$ file -e ascii -e compress -e elf etc
4. Параметр -s заставляет файл также читать блочные или символьные специальные файлы, например.
$ file -s /dev/sda /dev/sda: DOS/MBR boot sector, extended partition table (last)
5. Добавление параметров -z указывает файлу искать внутри сжатых файлов.
6. Если вы хотите сообщить информацию только о содержимом, а не о сжатии сжатого файла, используйте флаг -Z .
7. Вы можете указать команде файла выводить строки типа mime вместо более традиционных, удобочитаемых человеком, используя параметр -i .
$ file -i -s /dev/sda /dev/sda: application/octet-stream; charset=binary
8. Кроме того, вы можете получить разделенный косой чертой список допустимых расширений для найденного типа файла, добавив переключатель –extension.
Для получения дополнительной информации и вариантов использования обратитесь к справочной странице file command.
Вот и все! команда file — полезная утилита Linux для определения типа файла без расширения. В этой статье мы поделились некоторыми полезными примерами файловых команд. Если у вас есть какие-либо вопросы или мысли, чтобы поделиться, используйте форму обратной связи ниже, чтобы связаться с нами.