
接尾辞のないさまざまなファイルを含むフォルダー (iPhone バックアップ) があります。
これらのファイルに対してバッチ処理を実行し、各ファイルのファイルタイプを検出します(マジックファイルデータベース(/usr/share/misc/マジックまたはmanファイル) を選択し、それに応じてファイルサフィックス (データベース ファイル/MIME タイプ <-> サフィックスから) を自動的に変更/名前変更します。
関連するキーワード「ファイル」、「マジック」、「名前変更」などの一般的な性質のため、何時間も Google 検索や StackExchange 検索を行っても結果は得られませんでした。助けていただければ幸いです。
答え1
タイプ<->サフィックス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