1

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

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

3 ответа3

2

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

TrID - это утилита, предназначенная для идентификации типов файлов по их двоичным сигнатурам. Хотя есть подобные утилиты с жестко закодированной логикой, у TrID нет фиксированных правил. Вместо этого он расширяемый и может быть обучен распознавать новые форматы быстрым и автоматическим способом. Файл определений (также загружаемый с того же сайта) в настоящее время имеет более 5000 типов файлов.

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

C:\TrID>trid c:\temp\* -ae

Выход:

TrID/32 - Идентификатор файла v2.20 - (C) 2003-15 М. Понтелло
Найдено определений: 5702 Анализирует ...

Файл: c:\temp\FILE0001.ЧК 75,8% (.BAV) The Bat! Антивирусный плагин (187530/5/21)

Файл: c:\temp\FILE0002.77,8% (OGG) OGG Vorbis Audio (14014/3)

Файл: c:\temp\FILE0003.86,0% (DOC) Документ Microsoft Word (49500/1/4)

Файл: c:\temp\FILE0004.42,6% (EXE) сжатый UPX исполняемый файл Win32 (30569/9/7)

4 файл (ов) переименован.

1

Мне сказали, что это http://www.rlvision.com/flashren/about.asp работает. Хотя я никогда не был в месте, чтобы проверить.

Если это кажется неудачным, http://gnuwin32.sourceforge.net/packages/file.htm имеет команду linux file(), переписанную для использования в среде Windows. затем запустите хорошую партию как это:

@echo off
dir /b "c:\(path to folder containing files)" >>files.txt
for /f %%i in (files.txt) do (
##use file /b and a set of conditionals with find to parse extensions  
based on header) del filelist.txt

Удачи!

0

Под windows есть filetype.exe и делает именно то что нужно. Вы можете скачать его здесь: http://home.fnal.gov/~jklemenc/filetype.html. Он также содержит мини-справку.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .