借助 magic-file 检测文件类型并相应地重命名文件后缀

借助 magic-file 检测文件类型并相应地重命名文件后缀

我有一个文件夹(iPhone Backup),其中包含各种没有后缀的文件。

我想对这些文件运行批处理,它检测每个文件的文件类型(借助 magic-file 数据库(/ usr /共享/杂项/魔法或者人文件),并相应地自动更改/重命名其文件后缀(来自数据库文件/mime-type <->后缀)。

由于所涉及的关键字“文件”、“魔法”、“重命名”等的一般性质,数小时的谷歌搜索和 StackExchange 搜索没有带来任何结果。感谢帮助!

答案1

你的 type<-> 后缀 DB 是什么样的?解释file的输出并不是那么简单。我只是假设: * 第一个单词文件打印就足够了 * 这个单词是文件中的键,其中每行都包含 : ,值是我们想要的后缀

对于 bash,我会编写一个函数,该函数将文件类型作为参数并回显后缀:

MISTERIOUSFILEMIMETYPETOSUFFIXDB=/path/to/key/value/file

typetosuffix () {
    grep -E "^\s*$1:" ${MISTERIOUSFILEMIMETYPETOSUFFIXDB}| cut -d : -f 2
}

通过该功能您可以

for f in $(find /path/to/iphone/backup -type -f)
do
    FILEWITHOUTSUFFIX = basename $f
    [ ${FILEWITHOUTSUFFIX} = ${FILEWITHOUTSUFFIX%.*} ] && continue #the file has a suffix after all
    TYPE=$(file $f | cut -f 2) #put type determining magic here
    SUFFIXITSSUPPOSEDTOHAVE=$(typetosuffix $TYPE) #fetch suffix from DB
    mv $f $f$SUFFIXITSSUPPOSEDTOHAVE #rename the file
done

相关内容