Dateityp mit Hilfe von Magic-File erkennen und Dateiendung entsprechend umbenennen

Dateityp mit Hilfe von Magic-File erkennen und Dateiendung entsprechend umbenennen

Ich habe einen Ordner (das iPhone-Backup) mit verschiedenen Dateien ohne Suffix.

Ich möchte einen Batch-Prozess über diese Dateien laufen lassen, der den Dateityp jeder Datei erkennt (mithilfe der Magic-File-Datenbank (/usr/share/sonstiges/magicoderman-Datei) und ändert bzw. benennt sein Dateisuffix (von einer Datenbankdatei/MIME-Typ<->Suffix) entsprechend automatisch um.

Stundenlanges Googeln und Suchen auf StackExchange brachten aufgrund der allgemeinen Natur der beteiligten Schlüsselwörter „Datei“, „Magie“, „Umbenennen“ usw. keine Ergebnisse. Hilfe ist willkommen!

Antwort1

Wie sieht Ihre Typ<-> Suffix-DB aus? Es ist nicht so trivial, filedie Ausgabe von zu interpretieren. Ich gehe einfach davon aus: * dass das erste Wort, das die Datei ausgibt, ausreichend ist * dass dieses Wort der Schlüssel in einer Datei ist, in der jede Zeile Folgendes enthält: und Wert das gewünschte Suffix ist

Für Bash würde ich eine Funktion schreiben, die den Dateityp als Argument verwendet und das Suffix ausgibt:

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

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

Mit dieser Funktion können Sie

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

verwandte Informationen