Определение типа файла
Для более точного определения типа файла (например, если файл двоичный, какой программой он мог быть создан) используется команда file со следующим синтаксисом:
file [ -h ] [ -m файл_сигнатур ] [ -f файл_списка ] файл...
file [ -h ] [ -m файл_сигнатур ] -f файл_списка
file -c [ -m файл_сигнатур ]
Утилита file выполняет ряд проверок каждого из указанных файлов и всех файлов, указанных в файле_списка, если он задан, пытаясь проклассифицировать файлы. Если файл не является обычным, выдается его тип. Если же обычный файл имеет нулевую длину, он классифицируется как пустой (empty).
Если файл является текстовым, команда file проверяет первых 512 байтов и пытается определить, на каком языке программирования написан файл. Если файл является символической связью, происходит проверка и классификация файла, на который связь указывает.
При определении типа файла используется файл сигнатур. Стандартный файл сигнатур - /etc/magic. В нем хранятся числа или строки, показывающие тип файла:
0 string PK\003\004 ZIP archive 0 string MZ DOS executable (EXE) 0 string LZ DOS built-in 0 byte 0xe9 DOS executable (COM) 0 byte 0xeb DOS executable (COM) 24 long 60012 ufsdump archive file 0 string TZif zoneinfo timezone data file
Формат файла сигнатур детально описан на странице справочного руководства magic(4).
Если проверяемый файл не существует, не может быть прочитан или его тип не удается определить, это не считается ошибкой. Результат тестирования командой file не гарантирует 100% корректности. Не полагайтесь на него с полной уверенностью.
Поддерживаются следующие опции:
-c
Проверяет формат файла сигнатур.
-h
Не следует по символическим связям.
-f
Задает файл, содержащий список файлов для классификации.
-m
Задает альтернативный файл сигнатур, вместо /etc/magic.
Рассмотрим простой пример:
[kravchuk@arturo 16:05:40 /tmp]$ file -f f* f2.txt: ascii text f3.txt: ascii text f4: symbolic link to f2