
我有一個資料夾(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