2

У меня есть каталог с тысячами файлов изображений, в основном JPG, но немного PNG. Файлы не имеют расширения, они просто пронумерованы. Мне нужно конвертировать их все в JPG.

Используя find, я могу получить список всех файлов с их типами, и из этого я могу использовать Imagemagick для преобразования из PNG в JPG, указав их тип:

convert png:10020 jpg:10020.jpg

Но я хотел бы сделать это как пакет для всех файлов. Как я могу передать результаты поиска и конвертировать все файлы PNG в JPG?

1 ответ1

3
find . -type f | while read IN; do
  if [ "x$(file -b --mime-type $IN)" = "ximage/png" ]; then
    convert png:$IN jpg:$IN.jpg;
  fi;
done;

Значение аргументов:

  1. .
    Найти в текущем каталоге

  2. -type f
    Просто найдите файлы, а не каталоги / сокеты / и т.д.

  3. while read IN; do
    Поместите каждое имя файла в переменную IN и запустите цикл для него.

  4. if [ "x$(file -b --mime-type $IN)" = "ximage/png" ]; then
    Проверьте, является ли файл PNG ...

  5. convert png:$IN jpg:$IN.jpg;
    ... и если это так, преобразовать его.

  6. fi; done;
    Мы сделали!

На этот раз я проверил его, и он работает, конвертируя каталог, полный PNG без расширения .png в JPG.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .