Файлы без расширения в Linux

Обновлено: 02.07.2024

Найти тип любого файла или группы файлов с помощью команды «файл»

  • Университет Буффало
  • Университет Денвера
  • Пенсильванский университет

Бывший автор Lifewire Юрген Хаас – разработчик программного обеспечения, специалист по данным и поклонник операционной системы Linux.

Крис Селф (Chris Selph) — сертифицированный CompTIA преподаватель технологии и профессиональный преподаватель информационных технологий. Он также работает администратором сети и сервера и выполняет обслуживание и ремонт компьютеров для многочисленных клиентов.

Что нужно знать

  • Используйте команду файла, за которой следует имя файла.
  • Для нескольких файлов введите команду файла, а затем целевые файлы. Или используйте текстовый редактор, чтобы создать файл со списком имен файлов.
  • В Linux фактический тип файла может полностью отличаться от того, что может подразумевать его расширение.

Linux не использует расширения файлов; скорее, тип файла является частью имени файла. В этой статье объясняется, как узнать истинный тип файла в Linux.

Как использовать команду «файл»

Команда file имеет следующую форму:

Например, чтобы проверить тип заголовка файла touch.svg, выполните следующую команду:

Вывод примерно такой:

touch.svg: изображение масштабируемой векторной графики SVG

Разные типы файлов дают разные результаты, например:

  • Тип файла ODS: электронная таблица OpenDocument
  • Тип файла PDF: PDF-документ, версия 1.4
  • Тип файла CSV: текст ASCII, очень длинные строки, с индикаторами строки CRLF.

Обработка нескольких файлов

По умолчанию команда файла работает с одним файлом. Однако вы можете указать имя файла, содержащее список файлов, которые должны быть обработаны командой файла.

Например, откройте файл с именем testfiles с помощью редактора nano и добавьте в него следующие строки:

  • /etc/пароль
  • /etc/pam.conf
  • /etc/opt

Сохраните файл и выполните следующую файловую команду:

файл -f тестовые файлы

Вывод будет примерно таким:

  • /etc/passwd: текст ASCII
  • /etc/pam.conf: текст ASCII
  • /etc/opt: каталог

Еще один способ — запустить команду file один раз, но с указанием нескольких целей. Например:

файл /etc/passwd /etc/pam.conf /etc/opt

Вывод будет примерно таким:

  • /etc/passwd: текст ASCII
  • /etc/pam.conf: текст ASCII
  • /etc/opt: каталог

Стандартные подстановочные знаки тоже работают. Например, чтобы проверить все файлы в текущем рабочем каталоге, используйте:

Чтобы проверить наличие каталогов, начинающихся с буквы D (с учетом регистра), попробуйте следующее:

Результаты могут быть, например, "Рабочий стол", "Документы" и "Загрузки".

Сжатые файлы

Когда вы запускаете команду file для сжатого файла, вы видите что-то вроде этого:

  • file.zip: данные ZIP-архива, версия не ниже 2.0 для извлечения

Хотя этот результат говорит о том, что файл является архивным, вы не знаете его содержимого. Загляните внутрь zip-файла, чтобы увидеть типы файлов в сжатом файле. Следующая команда запускает команду file для файлов внутри ZIP-файла:

файл -z имя файла

Теперь на выходе отображаются типы файлов в архиве.

Как работает команда «файл»

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

  • Тесты файловой системы
  • Магические тесты
  • Языковые тесты

Первый набор тестов, возвращающий правильный ответ, предлагает тип файла для печати.

Тесты файловой системы проверяют результат системного вызова stat. Программа проверяет, является ли файл пустым и является ли он специальным файлом. Если тип файла найден в системном заголовочном файле, он возвращается как допустимый тип файла.

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

  • /etc/магия
  • /usr/share/misc/magic.mgc
  • /usr/share/misc/магия

Заключительные тесты — это языковые тесты. Файл проверяется на предмет того, является ли он текстовым. Проверяя первые несколько байтов файла, тест определяет, является ли файл форматом ASCII, UTF-8, UTF-16 или другим форматом, который идентифицирует файл как текстовый файл. Когда набор символов выведен, файл тестируется на разных языках.

Этот вопрос был закрыт, поскольку речь не шла об официальной версии Ubuntu. В настоящее время ответы не принимаются.

Хотите улучшить этот вопрос? Обновите вопрос, чтобы он соответствовал теме Ask Ubuntu.

Закрыт 2 года назад.

Почему разработчики предпочитают не использовать расширения для определенных файлов? Вот пример из MediaWiki -

введите здесь описание изображения

Это появляется с намерением, например, «СПРАВКИ» и «КОПИРОВАНИЕ», возможно, с юридическим намерением. Почему они это делают? В каких случаях мне следует это делать?


Помимо общих ответов, стоит отметить, что в данном конкретном случае названия традиционны. Многие дистрибутивы программного обеспечения имеют в своем корневом каталоге ряд текстовых файлов, подобных этим, каждый из которых пишется ЗАГЛАВНЫМИ БУКВАМИ и имеет такие имена, как HISTORY, COPYING, README, &c.. Традиционно ls сортирует файлы в ASCII (а не в алфавитном порядке), поэтому эти имена перемещаются в начало списка содержимого. Традиция прижилась, и даже сегодня вы можете найти множество пакетов с исходным кодом, например. GitHub, содержащий файл README.markdown в корневом каталоге.

Привет, @ThomasWard. Я согласен, что разместил этот вопрос не на том форуме, я инженер по аппаратному обеспечению, и мы стараемся изо всех сил. Я нахожу ответ и содержание здесь очень полезными, можем ли мы переместить это в лучшее место?

@J-Dizzle Этот вопрос обсуждается на мета, и перенос его на другой сайт Stack Exchange является одной из рассматриваемых возможностей. (Вы можете свободно участвовать в этом обсуждении, если хотите.)

3 ответа 3

В мире Linux нет установленного требования, что должны быть расширения. Файловые системы для UNIX-подобных операционных систем не отделяют метаданные расширения от остальной части имени файла. Символ точки — это просто еще один символ в имени основного файла. Вместо этого метаданные внутреннего файла обычно кодируются в начале файла, чтобы показать, какое приложение открывает его.

Если у файла нет расширения и он не является исполняемым, вероятнее всего это открытый текст, особенно в верхнем регистре.


не в случае с примером MediaWiki здесь (например, «README» и т. д.), «HISTORY» состоит даже из 19 000 строк!

@J-Dizzle Пожалуйста, позвольте мне перефразировать; без расширения, вероятно, открытый текст. Вам может понадобиться более мощный текстовый редактор, чтобы открыть его, но это обычный текст.

Я бы сказал: "без расширения, без разрешений на выполнение, возможно, открытый текст". Многие двоичные файлы, такие как /bin/ls и /usr/bin/file , не имеют специального суффикса. Файл, который не имеет расширения и не помечен как исполняемый, вероятно, является текстовым файлом. Файл без расширения и помеченный как исполняемый, может быть текстовым (например, /usr/bin/tzselect , /usr/bin/startx ) или двоичным. @Джей-Диззл

@ilkkachu Это правда. Как я сказал в своем ответе на связанный вопрос, я думаю, что люди слишком готовы обобщать «Linux делает это, Windows делает другое», когда на самом деле все это просто соглашения и поведение отдельных программ.

Как говорит K7AAY, нет сильной связи между именем файла и типом файла, хотя я не согласен с тем, что файлы без расширения, скорее всего, будут простым текстом. Чтобы узнать это с некоторой долей уверенности, используйте команду файла:

Путь к интерпретатору не проверяется файлом , поэтому он может указывать на что-то несуществующее:


Можно возразить, что сценарий — это тоже обычный текст. на самом деле нет такого понятия, как «исполняемый текстовый файл». Вы можете дать права на любой исполняемый файл. Но вы правы, если у него нет расширения, это могут быть какие-то двоичные данные.

действительно, но есть также файлы без расширения, которые оказываются чем-то другим, например, 64-битный общий объект ELF LSB, . или это все, данные .

90% имен файлов, обведенных кружком, состоят из прописных букв. Это рассматривается на нашем дочернем сайте Software Engineering:

Все заглавные буквы выделяются и делают файл легко видимым, что имеет смысл, потому что это, вероятно, первое, на что новый пользователь захочет взглянуть. (Или, по крайней мере, должен был посмотреть на…) Как уже говорили другие, имена файлов, начинающиеся с заглавной буквы, будут перечислены перед именами в нижнем регистре в ASCIIбетической сортировке ( LC_COLLATE=C ), которая помогает сделать файл видимым с первого раза. взгляд.

Файл README является частью группы файлов, которые пользователь бесплатного программного пакета обычно ожидает найти. Другие: УСТАНОВКА (инструкции по сборке и установке программного обеспечения), АВТОРЫ (список участников), КОПИРОВАНИЕ (текст лицензии), ВЗЛОМ (как начать работу, возможно, включая список отправных точек TODO), НОВОСТИ (последние изменения). или ChangeLog (в основном избыточный с системами контроля версий).

Вот что говорится в стандартах кодирования GNU о файле README.

  • название пакета;
  • номер версии пакета или ссылку на то, где в пакете можно найти версию;
  • общее описание того, что делает пакет;
  • ссылка на файл INSTALL, который, в свою очередь, должен содержать объяснение процедуры установки;
  • краткое объяснение любых необычных каталогов или файлов верхнего уровня или другие подсказки, чтобы читатели могли ориентироваться в источнике;
  • ссылка на файл, содержащий условия копирования. GNU GPL, если она используется, должна находиться в файле под названием COPYING. Если используется GNU LGPL, он должен находиться в файле с именем COPYING. МЕНЬШЕ .

Разработчикам, интересующимся соглашениями об именах файлов, следует посетить сайт Software Engineering.

Вы только что скачали файл без расширения? Вы, наверное, заметили, что Windows не может открыть этот файл и предлагает вам выбрать программу для его открытия.

Если вы уже знаете тип файла на основе источника, вы можете просто выбрать программу, с помощью которой хотите открыть файл, и установить ее по умолчанию в будущем. В этой статье показано, как открыть файл без расширения, если вы не знаете тип файла.


Убедитесь, что у файла нет расширения

Сначала вам следует убедиться, что ваш файл действительно не имеет расширения или у вас просто нет программы, необходимой для открытия файлов определенного типа.

Расширение файла можно проверить в столбце "Тип" проводника Windows.


Кроме того, вы можете щелкнуть файл правой кнопкой мыши и выбрать "Свойства". Вы увидите тип файла на вкладке «Общие» свойств файла.


Если указано "Файл", вы знаете, что файл не имеет расширения.

Есть еще один способ узнать расширение файла. Просто выберите файл и выберите вкладку «Вид» на верхней ленте. Установите флажок рядом с Расширения имени файла. Теперь вы увидите, что все файлы с расширением будут иметь свое расширение, указанное после имени файла.


Если у файла нет расширения, возможно, у него его нет. Однако что делать, если у вашего файла есть расширение, но вы все равно не можете его открыть?

Найти программу для расширения файла

Если у вашего файла есть расширение, но вы все равно не можете его открыть, это значит, что в вашей системе не установлена ​​нужная программа. Если вы хотите открыть файл, вам сначала нужно установить программу, которая может открыть файл с таким расширением.


После этого вы увидите список программ, с помощью которых можно открыть файл. Просто установите одну из этих программ и попробуйте открыть файл.

Однако, если у файла нет расширения, вам придется пойти другим путем.

Использовать Toolsley

Toolsley — это бесплатный веб-инструмент, помогающий определять расширения файлов. Он не требует установки какого-либо стороннего программного обеспечения, и вам не нужно загружать какие-либо файлы. Инструмент использует JavaScript для идентификации файлов локально в вашей системе.

  1. Перейти к Тулсли.
  2. Нажмите «Выбрать файл».
  3. Найдите файл на компьютере или просто перетащите файл в окно браузера.
  4. Вы увидите тип файла в зеленом поле ниже.


Использовать DROID

Давайте поблагодарим правительство Великобритании за DROID, бесплатный инструмент с открытым исходным кодом (репозиторий GitHub), разработанный Национальным архивом для пакетной идентификации форматов файлов. Инструмент использует внутреннюю подпись файла для определения формата и версии файла.

Несмотря на то, что вам нужно будет загрузить инструмент в свою систему, инструмент DROID имеет два преимущества по сравнению с Toolsley.

Во-первых, если у вас есть большой пакет файлов без расширения, вы сэкономите время, используя DROID, а не проверяя отдельные файлы в Toolsley. Во-вторых, поскольку это продукт, разработанный правительством Великобритании, ваша информация будет в большей безопасности.

  1. Скачать DROID.
  2. Извлеките файлы из ZIP-файла в папку. Если вы используете WinRAR, сделайте это, выбрав все файлы, выбрав ExtractTo вверху, выбрав папку для извлечения файлов и нажав кнопку ОК.


  1. Перейдите в папку, в которую вы распаковали файлы, и запустите droid.bat, который запустит DROID.


  1. Выберите «Добавить» вверху, чтобы добавить файлы. Выберите файлы без расширения и нажмите кнопку ОК.


  1. Добавив все файлы, нажмите кнопку "Пуск" вверху.


  1. Вы увидите расширение файла, указанное в столбце Формат.


Использование шестнадцатеричного редактора

Предыдущие два метода должны работать почти у всех. Однако, если у вас уже есть шестнадцатеричный редактор на вашем ПК и вы не хотите загружать файл на веб-сайт или загружать программу DROID, вы можете использовать шестнадцатеричный редактор для определения расширения файла.

Обратите внимание, что этот метод работает не во всех случаях; мы поговорим о том, почему через мгновение.

Для иллюстраций мы использовали бесплатную версию Hex Editor Neo, но метод остается тем же для любого шестнадцатеричного редактора.

  1. Запустите любой другой шестнадцатеричный редактор и нажмите Ctrl + O, чтобы открыть файл в шестнадцатеричном редакторе.
  2. Откройте файл. Вы увидите много цифр на экране. Перейдите к правому концу блока чисел, где вы увидите расширение файла.


  1. Если вы не видите расширение файла, прокрутите текст, чтобы найти его.

Например, вот что отображает шестнадцатеричный редактор при открытии файла Word:


Обратите внимание, что это расширение .xml, а не .docx. Это связано с тем, что начиная с Office 2007 Microsoft использует форматы на основе XML, такие как .docx и .xlsx.

Тем не менее, этот метод не работал, когда мы использовали его для листа Excel. Мы просмотрели весь гекс, но не нашли расширения.


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

Теперь вы сможете определить расширение файла независимо от того, установлена ​​ли у вас соответствующая программа для его открытия. Определив расширение файла, вы сможете изменить его даже для большого пакета.

Арджун – независимый писатель из Индии. Поработав аналитиком по фондовому рынку, Арджун решил заняться тем, чем он был увлечен, — технологиями. Он с энтузиазмом рассказывает и объясняет, как решать повседневные технические проблемы. Его областью знаний является Windows, и он отлично разбирается во всем, что связано с Excel. Прочитать полную биографию Арджуна

Понравился ли вам этот совет? Если это так, загляните на наш собственный канал на YouTube, где мы рассказываем о Windows, Mac, программном обеспечении и приложениях, а также предлагаем множество советов по устранению неполадок и видео с практическими рекомендациями. Нажмите кнопку ниже, чтобы подписаться!


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

Если вам кажется, что проблема с определением типов файлов без расширений надуманная, то это далеко не так! Во-первых, если подумать, это непростая задача. А можно нарваться на файл без расширения, например, при декодировании строки из кодировки Base64.

Во-вторых, в этой статье будет продолжение, в котором те же инструменты, которые вы изучите на этой странице, будут использоваться для:

1) разбор прошивки (например, роутеров, IP-камер) на составные части (первый этап реверс-инжиниринга или анализ работы устройств для поиска уязвимостей и бэкдоров)

2) поиск файловых систем на дисках и их образов (первый этап судебной ИТ-экспертизы)

3) поиск удаленных файлов

Как определить тип данных, если у файла нет расширения

Если файл не имеет расширения, то единственным способом определить его тип является содержимое этого файла. Вы можете попробовать добавить к имени файла разные расширения и попытаться открыть программы, соответствующие расширению — этот вариант медленный и неэффективный.

Некоторые типы двоичных файлов могут иметь одинаковый набор байтов — эти байты можно использовать для соответствия типу файла. И именно этот метод используется программами, предназначенными для определения типа данных.Конкретные байты, как правило, не располагаются в самом начале файла, поэтому помимо самих байтов нужно знать смещение от начала, где эти байты должны располагаться. Некоторые программы, кроме байтов для идентификации, имеют еще и список для проверки на ложные срабатывания.

Такие шаблоны в английском языке часто называют магическими — это происходит от «магического числа» в исполняемых файлах. Эти файлы имеют «магический номер», хранящийся в определенном месте в начале файла, который сообщает операционной системе UNIX, что файл является двоичным исполняемым файлом и какой из нескольких типов. Концепция магического числа была применена к другим двоичным файлам. То есть файлы одного типа имеют одинаковую последовательность байтов в определенном месте от начала файлов.

Файл с сигнатурами, описывающими, какие именно байты, на каком расстоянии от начала файла характерны для файлов того или иного типа, обычно называют магическим файлом.

В дополнение к магическим числам можно использовать и другие методы, например, файловая программа также может использовать системный вызов stat для выполнения тестов файловых систем. Тип текстовых файлов определяется содержащимися в них строками (например, это может быть PHP-код, файл в формате XML или HTML-разметки, JSON и т. д.).

Команда file — мгновенно определяет тип любого файла

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

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


То есть это текстовый файл офисного пакета Microsoft Office.

Вы можете указать сразу несколько файлов для проверки или использовать подстановочные знаки. Например, следующая команда проверит типы всех файлов в текущей папке:


Программа file имеет параметры, подробности см. в отдельной статье «Инструкции по использованию команды file».

Аналог команды file для Windows

file — это утилита командной строки для Linux, поэтому пользователям Windows нужна какая-то альтернатива. Давайте рассмотрим несколько способов использования файла в Windows.

1. Файловая утилита в Cygwin

Этот способ, на мой взгляд, самый простой. Просто скачайте Cygwin, и вы сможете использовать большинство утилит Linux. Для получения дополнительной информации, в том числе о том, как указать пути в файловой системе, см. «Как начать работу с командами Linux в Windows: Cygwin».


2.файл в WSL

Подсистема Windows для Linux (WSL) — это еще один способ использования утилит Linux в Windows. Подробнее о работе с WSL см. в справочном материале «WSL (подсистема Windows для Linux): советы, инструкции, устранение неполадок».

3. Скомпилированная «файловая» программа для Windows

Файлы отличаются архитектурой (64- и 32-разрядная), а также компилятором.

Распакуйте загруженный архив. Например, я помещаю загруженные файлы в папку C:\Users\MiAl\Downloads\file\.

Откройте командную строку, для этого нажмите Win+x, выберите «Windows PowerShell».

Перейти в папку с программой:

Чтобы определить расширение файла, используйте команду вида:


Вы можете проверить сразу много файлов, для этого зайдите в папку с файловой утилитой и выполните такую ​​команду:

Например, я хочу проверить все файлы в папке Z:\testfiles\, тогда команда выглядит следующим образом:


4. TrID — это кроссплатформенная файловая альтернатива для Windows и Linux

Пример анализа файла — обратите внимание, что отображается несколько вариантов с указанием процентной вероятности каждого из них:


Если указать несколько файлов для идентификации, то будет отображаться только наиболее вероятный вариант типа файла:


Установка TRID в Windows

Распакуйте оба файла в одну папку.

Распакуйте загруженный архив. Например, я помещаю загруженные файлы в папку C:\Users\MiAl\Downloads\trid\.

Откройте командную строку, для этого нажмите Win+x, выберите «Windows PowerShell».

Перейти в папку с программой:

Чтобы определить расширение файла, используйте команду вида:

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




Кроме того, использование ключа -ae заставит TrID добавить предполагаемые расширения к именам файлов. Это удобно, например, при работе с файлами, восстановленными программами восстановления данных. Например:

На этом этапе файлы в папке c:\temp будут выглядеть следующим образом:

Вместо этого ключ -ce просто изменит расширение файла на новое; если у файла нет расширения, будет добавлено новое. Например:

  • IAmASoundFile.dat -> IAmASoundFile.wav
  • IAmABitmap -> IAmABitmap.bmp

TrID может получить список файлов из стандартного ввода с помощью переключателя -@.

Поэтому можно работать со всем деревом папок или определенным подмножеством файлов, просто используя вывод какой-либо другой команды через канал. Что-то вроде:

Можно указать TrID показывать дополнительную информацию о каждом совпадении (например, тип MIME, кто создал это определение, сколько файлов было просканировано и т. д.); а также можно ограничить количество отображаемых результатов.

Переключатель -v активирует подробный режим, а -r:nn указывает максимальное количество совпадений, которые будет отображать TrID. Значение по умолчанию: 5 для обычного режима, 2 для подробного анализа, 1 для анализа нескольких файлов.

TrID обновляется нечасто, но база данных регулярно пополняется новыми сигнатурами, поэтому время от времени обновляйте базу данных.

5.fil — еще одна кроссплатформенная альтернатива файлу

Утилита fil написана на Go и является кроссплатформенной. Но подписей в программе так мало, что, на мой взгляд, утилита fil практически бесполезна.

Альтернативные файлы

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

Обнаружить легко

Detect It Easy — это кроссплатформенный инструмент для определения типов файлов. Существует вариант с графическим интерфейсом, а также с интерфейсом командной строки.

Чтобы проанализировать файл /mnt/disk_d/Share/testfiles/file1 и отобразить результаты в графическом интерфейсе:

Чтобы проанализировать файл /mnt/disk_d/Share/testfiles/file1 и отобразить результаты в интерфейсе командной строки:

Detect It Easy в первую очередь нацелен на анализ исполняемых файлов, поэтому его функции больше связаны с программными файлами, например, определение архитектуры. Но есть и поддержка других двоичных файлов.

Прогулка по мусору

Binwalk — это программа для анализа встроенного ПО, но она содержит множество сигнатур двоичных файлов, поэтому подходит для определения типа файла. Особенность Binwalk в том, что он нацелен на работу с составными файлами (которые обычно являются прошивками), поэтому может определить тип файла, даже если файла нет в начале.

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

Detect It Easy и Binwalk не столько конкуренты файловой утилиты, сколько «последний шанс» определить тип данных, если файловая команда не помогла.

Продолжение смотрите в статье «Как анализировать и разбивать составные файлы (прошивки, многораздельные образы дисков)».

Читайте также: