Detecte o tipo de arquivo com a ajuda do arquivo mágico e renomeie o sufixo do arquivo de acordo

Detecte o tipo de arquivo com a ajuda do arquivo mágico e renomeie o sufixo do arquivo de acordo

Tenho uma pasta (o Backup do iPhone) com vários arquivos sem sufixo.

Quero executar um processo em lote sobre esses arquivos, que detecta o tipo de arquivo de cada arquivo (com a ajuda do banco de dados de arquivos mágicos (/usr/share/misc/magicouarquivo homem) e altera/renomeia automaticamente seu sufixo de arquivo (de um arquivo de banco de dados/tipo mime<->sufixo) de acordo.

Horas de pesquisa no Google e StackExchange não trouxeram resultados, devido à natureza geral das palavras-chave envolvidas "arquivo", "mágica", "renomear", etc. Ajuda apreciada!

Responder1

Como é o seu tipo <-> sufixo DB? Não é tão trivial interpretar filea saída de. Vou apenas assumir: * que a primeira palavra impressa no arquivo é suficiente * esta palavra é a chave em um arquivo onde cada linha contém: e valor é o sufixo que queremos

Para o bash, eu escreveria uma função que recebe como argumento o tipo de arquivo e ecoa o sufixo:

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

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

Com essa função você pode

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

informação relacionada