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

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

Я ищу пошаговый процесс, а также могу ли я выполнять их все одновременно, или их нужно делать индивидуально. Мне нужно поменять 500+.

1
задан 18 January 2015 в 17:30

1 ответ

Необходимо смочь использовать 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 дать a 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 просто выводы, что это сделало бы - проверяют и проверяют это дважды, это ведет себя как ожидалось на Ваших файлах прежде, чем удалить echo
  2. это только воздействует на jpeg,gif, и png файлы: если будут другие типы изображения, то необходимо будет добавить их явно
  3. это переименует (добавьте дополнительное расширение), любые файлы это рассматривает, чтобы иметь неправильное расширение, на основе волшебных байтов

Может быть другой - легче - инструменты использования опций как exiftool

2
ответ дан 7 December 2019 в 14:02

Другие вопросы по тегам:

Похожие вопросы: