2 个不稳定版本
0.2.3 | 2022年7月22日 |
---|---|
0.1.0 | 2022年7月21日 |
#28 在 #magic
350KB
22K SLoC
nameme
na·me·me | \na-me-me\
1. 一个简单的实用程序,根据文件的魔数找到其真实文件类型,并可选项地重命名它。
用法
nameme
是一个 CLI 程序,给定一个路径,根据内容本身的魔数打印出该路径的内容类型。例如,在一个如下所示的文件夹中
.
├── a
├── Cats
│ ├── 1.jpg (* <- Actually a BMP image *)
│ ├── 2.jpg
│ ├── 3.jpg
│ └── 4.jpg
└─ Dogs
├── 1.jpg
├── 2.jpg
├── 3.jpg (* <- Actually a GIF *)
└── 4.jpg
调用 nameme .
将打印
$ nameme .
Format Results Erroneous
BMP 1 1
GIF 1 1
JPG 7 0
要查看哪些文件命名错误,可以使用 nameme --verbose
$ nameme --verbose .
Format Results Erroneous
BMP 1 1
./Cats/1.jpg
GIF 1 1
./Dogs/3.jpg
JPG 7 0
./Cats/3.jpg
./Cats/5.jpg
./Cats/2.jpg
./Cats/4.jpg
./Dogs/1.jpg
./Dogs/2.jpg
./Dogs/4.jpg
nameme
的另一个用途是自动根据文件的魔数重命名文件[^1]
$ tree .
.
├── Cats
│ ├── 1.jpg
│ ├── 2.jpg
│ ├── 3.jpg
│ ├── 4.jpg
│ └── 5.jpg
└── Dogs
├── 1.jpg
├── 2.jpg
├── 3.jpg
└── 4.jpg
$ nameme --rename --auto .
$ tree .
.
├── Cats
│ ├── 1.bmp
│ ├── 2.jpg
│ ├── 3.jpg
│ ├── 4.jpg
│ └── 5.jpg
└── Dogs
├── 1.jpg
├── 2.jpg
├── 3.gif
└── 4.jpg
如果你希望被询问某个文件是否应该重命名,可以将上一个例子中的调用中的 --auto
标志移除,这样 nameme
将会对每个可能的重命名进行询问
$ nameme --rename .
rename ./Cats/1.jpg -> ./Cats/1.bmp? [Y/n] y
rename ./Dogs/3.jpg -> ./Dogs/3.gif? [Y/n] y
待办事项
列表中标记为完成的项目仍然可以改进。
-
每个头部模式可能对应多个扩展名。当重命名文件时,用户应该能够从可用的扩展名中选择所需的扩展名。
-
用户应该能够决定是否贪婪地匹配头部(即,取最长的匹配,就像现在这样)或懒惰地匹配(即,取最短的匹配)。
-
当在大型目录上调用时,
nameme
可以变得相当慢。找出问题所在。 -
file
能够确定某些文本文件的类型(例如,json)。找出是否在这里实现类似的功能有意义,以及如何实现。
致谢
这个库和应用程序基于 GCK 的文件签名表,在 MIT 许可证下分发。[^1]: 单个头部模式可能对应多个可能的扩展名。理想情况下,用户应该能够选择选择可用的扩展名,但这对于大文件来说可能会非常繁琐。
依赖项
~9–22MB
~268K SLoC