Como posso renomear arquivos / alterar suas extensões com base no tipo MIME com um script? [duplicado]

1

Espero que alguém possa me explicar como posso alterar um tipo de arquivo. Eu recentemente enviei minhas fotos para o meu laptop e metade delas são salvas como um arquivo e não uma imagem que significa que não posso enviá-las para sites para impressão.

Estou à procura de um processo passo-a-passo e também se posso fazê-los todos ao mesmo tempo ou se eles devem ser feitos individualmente. Eu tenho mais de 500 para mudar.

    
por Laura 18.01.2015 / 15:26

1 resposta

2

Você deve conseguir usar o utilitário mimetype - de man mimetype :

NAME
       mimetype - Determine file type

SYNOPSIS
       mimetype [options] [-] files

DESCRIPTION
       This script tries to determine the mime type of a file using the Shared
       MIME-info database. It is intended as a kind of file(1) work-alike, but
       uses mimetypes instead of descriptions.

Então, por exemplo:

$ mimetype somefile
somefile: image/jpeg

No entanto, por padrão, mimetype "acreditará" na extensão, se presente - assim:

$ cp somefile somefile.gif
$ mimetype somefile.gif
somefile.gif: image/gif

Você pode dizer para usar somente magic bytes para fazer a determinação adicionando a opção -M :

$ mimetype -M somefile.gif
somefile.gif: image/jpeg

e você pode adicionar -b para fornecer uma brief description:

$ mimetype -bM somefile.gif
image/jpeg

Se você quisesse script renomear, eu sugeriria algo assim:

#!/bin/bash

while read -r -d '' f; do
  mt="$(mimetype -bM "$f")"
  ext="${mt##*/}"
  case "$ext" in
    jpeg|gif|png)
      echo mv -v "$f" "$f.$ext"
      ;;
    *)
    echo "skipping mimetype $mt... "
      ;;
  esac
done < <(find -type f -print0)

NOTAS:

  1. ele realmente não renomeia nada como está escrito: o echo mv apenas exibe o que faria - verifique e verifique se ele está se comportando como esperado em seu arquivos antes de remover o echo
  2. ele só funciona nos arquivos jpeg , gif e png : se houver outros tipos de imagem, você precisará adicioná-los explicitamente
  3. renomeará (adicionará uma extensão adicional a) qualquer arquivo que considere ter a extensão errada , com base em bytes mágicos

Pode haver outras opções - mais fáceis - usando ferramentas como exiftool

    
por steeldriver 18.01.2015 / 16:56