- Как определить тип файла файла с помощью Linux
- Найдите тип файла любого файла или группы файлов с помощью команды FILE
- Как работает команда File
- Как использовать команду «Файл»
- Настройте вывод из команды File
- Обработка нескольких файлов
- Сжатые файлы
- Как узнать типы файлов в Linux
- Инструкция по использованию команды file
- Как узнать тип файла без расширения или с неправильным расширением
- Как проверить тип сразу нескольких файлов
- Как по типу файла узнать расширение
- Как сделать так, чтобы не менялась дата доступа к файлу при использовании file
- Как узнать файловую систему диска
- Связанные статьи:
Как определить тип файла файла с помощью 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
Самый простой способ определить тип файла в любой операционной системе — обычно посмотреть на его расширение (например, .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 для определения типа файла без расширения. В этой статье мы поделились некоторыми полезными примерами файловых команд. Если у вас есть какие-либо вопросы или мысли, чтобы поделиться, используйте форму обратной связи ниже, чтобы связаться с нами.
Инструкция по использованию команды file
Как узнать тип файла без расширения или с неправильным расширением
Команда file может определить тип файла для обычных файлов и используемую файловую систему для дисков.
Утилита file используется «магические» байты. Суть в том, что файлы одного типа имеют одинаковые байты в определённых местах файла, программа file использует обширную базу данных в которых описаны типы файлов и какие последовательности байтов в каких местах располагаются. Благодаря этому с помощью file можно определить тип файалов без расширения или с неправильным расширением.
Использование очень простое — укажите одно или несколько имён файлов, то есть:
file ФАЙЛ1 ФАЙЛ2 ФАЙЛ3 ФАЙЛ4
Чтобы узнать тип файла без расширения, имеющего имя «file1» нужно выполнить команду:
file1: JPEG image data, Exif standard: [TIFF image data, little-endian, direntries=11, manufacturer=samsung, model=SM-J710F, orientation=upper-left, xresolution=164, yresolution=172, resolutionunit=2, software=J710FXXU6CSE1, datetime=2019:11:10 16:31:24, GPS-Data], baseline, precision 8, 4128x3096, components 3
Вначале идёт имя файла, а затем через двоеточия показывается информация о нём. В этом примере это JPEG, то есть изображение. Также для данного файла частично показана метаинформация.
Если вы не хотите, чтобы вначале показывалось имя файла, то используйте опцию -b:
Как проверить тип сразу нескольких файлов
Как можно увидеть на скриншоте, в текущей папке имеется несколько файлов без расширений. Узнаем тип каждого из них.
Можно указать имена всех файлов или использовать * (звёздочка) чтобы проверить все файлы в текущей директории:
Удалось определить тип каждого файла:
- JPEG image — картинка
- Python script — скрипт на языке Python
- PDF document — PDF документ
- PE32 executable (console) Intel 80386 Mono/.Net assembly, for MS Windows — исполнимый файл для ОС MS
- 7-zip archive — архив 7-zip
- Bourne-Again shell script — Bash скрипт
- DOS/MBR boot sector, code offset 0x52+2, OEM-ID «NTFS — образ диска с файловой системой NTFS
- Microsoft Word 2007+ — офисный документ Word
- OpenDocument Text — офисный документ LibreOffice
Как по типу файла узнать расширение
Чтобы узнать правильное расширение для файла определённого типа используйте опцию —extension:
Как сделать так, чтобы не менялась дата доступа к файлу при использовании file
Программа file считывает данные из файла и, следовательно, меняет дату последнего доступа к нему. Опция -p, —preserve-date в системах, поддерживающих utime или utimes, попытается сохранить время доступа к анализируемым файлам, чтобы сделать вид, что файл никогда их не читался.
Как узнать файловую систему диска
Для файлов образов файловых систем, программа file покажет тип файловой системы. Для дисков эта утилита также умеет определять тип файловой системы, но требуется использование двух дополнительных опций, поскольку файл блочного устройства это специальный файл, а иногда это просто ссылка на специальный файл.
Опция -L, —dereference заставляет следовать по символическим ссылкам, как опция с подобным именем в ls (в системах, которые поддерживают символические ссылки). Это значение по умолчанию, если определена переменная среды POSIXLY_CORRECT.
Обычно file пытается только прочитать и определить тип файлов, переданных в качестве аргументов, о которых stat сообщает как обычные файлы. Это предотвращает проблемы, поскольку чтение специальных файлов может иметь специфические последствия. Указание опции -s, —special-files заставляет файл также читать файлы, которые являются специальными блочными или символьными файлами. Это полезно для определения типов файловой системы данных в необработанных разделах диска, которые являются специальными блочными файлами. Эта опция также заставляет файл игнорировать размер файла, сообщаемый stat, поскольку в некоторых системах он сообщает нулевой размер для необработанных разделов диска.
Следующая информация выведет данные о файловой системе диска /dev/sda:
/dev/sda: Linux rev 1.0 ext4 filesystem data, UUID=aad9d8d7-b1b9-435a-9e41-fc8159d2c484 (needs journal recovery) (extents) (64bit) (large files) (huge files)
Как следует из вывода, это файловая система ext4. Также показаны некоторые её характеристики и поддерживаемые возможности.
Без опции -s, то есть командой
мы получили бы следующий результат:
Как в file заглянуть во внутрь сжатых файлов
С помощью опции -z, —uncompress можно попытаться заглянуть во внутрь сжатых файлов. Опция не всегда работает и иногда из-за неё работа file завершается ошибкой.