Detectar o tipo de arquivo com a ajuda de magic-file e renomear file-suffix adequadamente

2

Eu tenho uma pasta (o iPhone Backup) com vários arquivos sem um sufixo.

Eu quero executar um processo em lote nesses arquivos, que detecta o tipo de arquivo de cada arquivo (com a ajuda do banco de dados de arquivos mágicos ( / usr / share / misc / magic ou man file ), e automaticamente muda / renomeia seu sufixo de arquivo (a partir de um arquivo de banco de dados / tipo mime < - > sufixo) de acordo.

Horas de pesquisa no Google e StackExchange-Searching não trouxeram resultados, devido à natureza geral das palavras-chave envolvidas "file", "magic", "rename", etc. Ajuda apreciada!

    
por porg 20.07.2012 / 01:35

1 resposta

1

Qual é o seu tipo < - > Sufixo DB parece? Não é tão trivial interpretar a saída de file . Eu apenas vou assumir:  * que o primeiro arquivo de palavra imprime é suficiente  * esta palavra é a chave em um arquivo onde cada linha contém: e value é o sufixo que queremos

Para o bash eu escreveria uma função que toma 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
    
por 20.07.2012 / 08:04