Определите тип файла с помощью magic-file и переименуйте суффикс файла соответствующим образом

Определите тип файла с помощью magic-file и переименуйте суффикс файла соответствующим образом

У меня есть папка (резервная копия iPhone) с различными файлами без суффикса.

Я хочу запустить пакетный процесс для этих файлов, который определит тип файла каждого файла (с помощью базы данных magic-file (/usr/share/misc/магияилифайл человека) и автоматически изменяет/переименовывает свой файловый суффикс (из базы данных file/mime-type<->suffix) соответствующим образом.

Часы поиска в Google и StackExchange не дали результатов из-за общего характера используемых ключевых слов «файл», «магия», «переименовать» и т. д. Помощь приветствуется!

решение1

Как выглядит ваша база данных type<-> suffix? Интерпретировать fileвывод не так уж и просто. Я просто предположу: * что достаточно первого слова file prints * это слово является ключом в файле, где каждая строка содержит : и value является суффиксом, который мы хотим

Для 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

Связанный контент