Используйте команду "найти" для поиска PNG-файлов, вывода канала в imagemagick для пакетного преобразования

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

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

convert png:10020 jpg:10020.jpg

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

15
задан Hibiscus
20.11.2022 14:22 Количество просмотров материала 2742
Распечатать страницу

1 ответ

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

    Просто найдите файлы, а не каталоги / sockets / etc.

  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.

3
отвечен BenjiWiebe 2022-11-21 22:10

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх