zaLinux.ru

Инструкция по использованию команды file


Как узнать тип файла без расширения или с неправильным расширением

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

Утилита file используется «магические» байты. Суть в том, что файлы одного типа имеют одинаковые байты в определённых местах файла, программа file использует обширную базу данных в которых описаны типы файлов и какие последовательности байтов в каких местах располагаются. Благодаря этому с помощью file можно определить тип файалов без расширения или с неправильным расширением.

Использование очень простое — укажите одно или несколько имён файлов, то есть:

file ФАЙЛ

или

file ФАЙЛ1 ФАЙЛ2 ФАЙЛ3 ФАЙЛ4

Чтобы узнать тип файла без расширения, имеющего имя «file1» нужно выполнить команду:

file 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:

file -b ФАЙЛ

Как проверить тип сразу нескольких файлов

Как можно увидеть на скриншоте, в текущей папке имеется несколько файлов без расширений. Узнаем тип каждого из них.

Можно указать имена всех файлов или использовать * (звёздочка) чтобы проверить все файлы в текущей директории:

file *

Удалось определить тип каждого файла:

  1. JPEG image — картинка
  2. Python script — скрипт на языке Python
  3. PDF document — PDF документ
  4. PE32 executable (console) Intel 80386 Mono/.Net assembly, for MS Windows — исполнимый файл для ОС MS
  5. 7-zip archive — архив 7-zip
  6. Bourne-Again shell script — Bash скрипт
  7. DOS/MBR boot sector, code offset 0x52+2, OEM-ID "NTFS — образ диска с файловой системой NTFS
  8. Microsoft Word 2007+ — офисный документ Word
  9. OpenDocument Text — офисный документ LibreOffice

Как по типу файла узнать расширение

Чтобы узнать правильное расширение для файла определённого типа используйте опцию --extension:


Например:

file --extension *

Как сделать так, чтобы не менялась дата доступа к файлу при использовании file

Программа file считывает данные из файла и, следовательно, меняет дату последнего доступа к нему. Опция -p, --preserve-date в системах, поддерживающих utime или utimes, попытается сохранить время доступа к анализируемым файлам, чтобы сделать вид, что файл никогда их не читался.

Как узнать файловую систему диска

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

Опция -L, --dereference заставляет следовать по символическим ссылкам, как опция с подобным именем в ls (в системах, которые поддерживают символические ссылки). Это значение по умолчанию, если определена переменная среды POSIXLY_CORRECT.

Обычно file пытается только прочитать и определить тип файлов, переданных в качестве аргументов, о которых stat сообщает как обычные файлы. Это предотвращает проблемы, поскольку чтение специальных файлов может иметь специфические последствия. Указание опции -s, --special-files заставляет файл также читать файлы, которые являются специальными блочными или символьными файлами. Это полезно для определения типов файловой системы данных в необработанных разделах диска, которые являются специальными блочными файлами. Эта опция также заставляет файл игнорировать размер файла, сообщаемый stat, поскольку в некоторых системах он сообщает нулевой размер для необработанных разделов диска.


Следующая информация выведет данные о файловой системе диска /dev/sda:

file -s -L /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 /dev/sda

мы получили бы следующий результат:

/dev/sda: block special (8/0)

Как в file заглянуть во внутрь сжатых файлов

С помощью опции -z, --uncompress можно попытаться заглянуть во внутрь сжатых файлов. Опция не всегда работает и иногда из-за неё работа file завершается ошибкой.


Рекомендуемые статьи:

Оставить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *