我有一个文件夹(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