Вопрос Как переименовать файлы / изменить их расширения на основе mimetype со сценарием? [Дубликат]


На этот вопрос уже есть ответ:

Я надеюсь, кто-то может объяснить мне, как я могу изменить тип файла. Недавно я загрузил свои фотографии на свой ноутбук, и половина из них были сохранены как файл, а не изображение, что означает, что я не могу загрузить их на веб-сайты для печати.

Я ищу поэтапный процесс, а также, если я могу сделать все это одновременно или сделать это индивидуально. У меня есть 500+, чтобы измениться.


1
2018-01-18 14:26


происхождения




ответы:


Вы должны иметь возможность использовать mimetype полезность - от 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.

Так, например:

$ mimetype somefile
somefile: image/jpeg

Однако, по умолчанию, mimetype «верят» расширение, если оно присутствует, - так:

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

Вы можете сказать, что использовать только файлы магические байты для определения, добавив -M переключатель:

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

и вы можете добавить -b дать brief описание:

$ mimetype -bM somefile.gif
image/jpeg

Если вы хотите скрипт переименование, я бы предложил что-то вроде этого:

#!/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)

ЗАМЕТКИ:

  1. он фактически не переименовывает ничего, как написано: echo mv просто выводит то, что он бы do - пожалуйста, проверьте и дважды проверьте, что он ведет себя так, как ожидалось, на ваш файлов перед удалением echo
  2. он работает только jpeg,gif, а также png файлы: если есть другие типы изображений, вам нужно будет добавить их явно
  3. он переименует (добавит дополнительное расширение в) любые файлы, которые он считает имеющими неправильно расширение, основанное на магических байтах

Могут быть другие - более простые - варианты с использованием таких инструментов, как exiftool


2
2018-01-18 15:56