
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, file
die 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