我有一个目录,里面全是不同类型的随机命名文件,都没有文件扩展名。大多数是图像,还有一些视频和一些纯文本。我使用了 Windows 版本的文件确认所有文件都可以通过其标题/元数据进行识别,但由于大约有 2400 个文件,因此希望自动命名。
我不太关心文件名,只关心其类型是否具有适当的扩展名。有人知道可以做到这一点的程序或脚本吗?
答案1
这似乎与此类似问题除了简单地识别文件之外,您还需要重命名文件。 这也可以使用相同的工具 (TrID——文件标识符) 就是该问题中提到的。
TrID 是一款旨在通过二进制签名识别文件类型的实用程序。虽然有类似的实用程序采用硬编码逻辑,但 TrID 没有固定规则。相反,它是可扩展的,可以训练以快速自动的方式识别新格式。定义文件(也可从同一网站下载)目前有 5000 多种文件类型。
您可以在命令行中使用带开关的 TrID 命令-ae
来指示 TrID 在识别后重命名文件。例如:
C:\TrID>trid c:\temp\* -ae
输出:
TrID/32 - 文件标识符 v2.20 - (C) 2003-15 由 M.Pontello
找到定义:5702 正在分析...文件:c:\temp\FILE0001.CHK 75.8% (.BAV) The Bat! 防病毒插件 (187530/5/21)
文件:c:\temp\FILE0002.CHK 77.8% (.OGG) OGG Vorbis 音频 (14014/3)
文件:c:\temp\FILE0003.CHK 86.0% (.DOC) Microsoft Word 文档 (49500/1/4)
文件:c:\temp\FILE0004.CHK 42.6% (.EXE) UPX 压缩的 Win32 可执行文件 (30569/9/7)
4 个文件已重命名。
答案2
我听说这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
祝你好运!
答案3
在 Windows 下,有 filetype.exe,它可以满足您的需求。您可以从此处下载:http://home.fnal.gov/~jklemenc/filetype.html。它还包含一个迷你帮助。