
У меня есть папка (резервная копия 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