使用 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

相關內容