
У меня есть каталог с тысячами файлов изображений, в основном JPG, но есть и PNG. У файлов нет расширения, они просто пронумерованы. Мне нужно преобразовать их все в JPG.
С использованиемнаходитьЯ могу получить список всех файлов с их типами, и на основе этого я могу использовать Imagemagick для преобразования из PNG в JPG, указав их тип:
convert png:10020 jpg:10020.jpg
Но я хотел бы сделать это как пакет по всем файлам. Как мне передать выводнаходитьи конвертировать все файлы PNG в JPG?
решение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;
Значение аргументов:
.
Найти в текущем каталоге-type f
Просто найдите файлы, а не каталоги/сокеты и т. д.while read IN; do
Поместите каждое имя файла в переменнуюIN
и запустите цикл по нему.if [ "x$(file -b --mime-type $IN)" = "ximage/png" ]; then
Проверьте, является ли файл PNG...convert png:$IN jpg:$IN.jpg;
...и если это так, преобразуйте его.fi; done;
Мы сделали!
На этот раз я это проверил, и это работает, преобразуя каталог, полный файлов PNG без расширения, .png
в файлы JPG.