С чего начать Первые шаги трек · 15 ступеней
Linux Labs

file — тип файла

3 мин Linux

Определить, что внутри файла (текст, ELF, архив, картинка) по содержимому, а не по расширению.

Шпаргалка

4 команды Версия для печати
  • file f тип по содержимому
  • file -i f MIME + кодировка
  • file -b f только тип (для скриптов)
  • file -s /dev/sda1 тип ФС на устройстве (root)

Обзор

file определяет тип файла по содержимому (сигнатуре, «магическим байтам»), а не по расширению. В Linux расширение ничего не значит — file говорит правду.

bash
file report           # report: ASCII text
file /bin/ls          # ELF 64-bit LSB pie executable, x86-64 …
file archive          # gzip compressed data  (даже если без .gz)
file photo            # JPEG image data, …

file определяет тип по базе сигнатур (/etc/magic, пакет file/libmagic), а не угадывает по расширению — переименование файла в .txt не изменит результат.

Ключи

5

-b (кратко, без имени файла), -i (MIME-тип и кодировка), -L (идти по символической ссылке и смотреть на цель, не на саму ссылку), -s (заглянуть в специальные файлы/блочные устройства — иначе file скажет просто «block special»), -z (заглянуть внутрь сжатого файла, не просто определить, что это gzip).

Ключ Что делает Пример
-b --brief Не печатать имя файла, только тип — удобно в скриптах. file -b script.sh
-i --mime MIME-тип и кодировку вместо описания для человека. file -i notes.txt
-L --dereference Идти по символической ссылке и смотреть на её цель, а не на саму ссылку. file -L symlink
-s --special-files Заглянуть в специальные файлы и блочные устройства (иначе только "block special"). file -s /dev/sda1
-z --uncompress Заглянуть внутрь сжатого файла, определив тип содержимого, а не только формат сжатия. file -z archive.gz

Ничего не найдено. Попробуй запрос короче.

Рецепты

1

Примеры

bash
file *                        # типы всех файлов в каталоге
file -i notes.txt             # MIME-тип: text/plain; charset=utf-8
file -b script.sh             # без имени файла (только тип) — удобно в скриптах
file -L symlink               # идти по симлинку и смотреть цель
file -s /dev/sda1             # -s: заглянуть в блочное устройство (тип ФС)
file -z archive.gz            # заглянуть ВНУТРЬ сжатого

Неполадки

4

«Скрипт не запускается: cannot execute binary file»

file script покажет реальный тип. Частые причины: это HTML/текст ошибки вместо бинаря (скачалось не то), или CRLF-переводы строк (file скажет «with CRLF line terminators») — почини sed -i 's/\r$//' script.

Кодировка текста под вопросом

file -i file покажет charset (utf-8 / iso-8859-1). Для перекодировки — iconv.

Определить тип ФС на разделе

file -s /dev/sdXN (от root) — быстрый способ без монтирования; для разметки см. mount.

file говорит «data» вместо конкретного типа

Сигнатура не найдена в базе /etc/magic — либо файл повреждён, либо это неизвестный/сырой формат (например, зашифрованные данные выглядят как случайный набор байт). Это не ошибка file, а честный ответ «не смог опознать».

См. также

  • files-basics — Навигация и файлы — ls, cd, cp, mv, rm, cat, less, head, tail, копипаст в терминале.
  • stat — Полная информация о файле: размер, права, владелец, времена (atime/mtime/ctime), inode.
  • tar — Создание и распаковка архивов tar/gz/xz; бэкап каталогов.
Загрузка…