Terminal: Используйте информацию об изображении из sips для переименования файлов

Команда sips имеет отличный вариант для чтения информации из файлов. Следующая команда перебирает все изображения и показывает информацию о ширине или высоте:

for i in *.jpg; do sips -g pixelWidth $i;done

for i in *.jpg; do sips -g pixelHeight $i;done 

Теперь я хотел бы прочитать эту информацию и использовать ее с mv переименовать изображения так:

image-widthxheight.jpg

image-1600x900.jpg

Последнее, что я хочу сделать, это использовать sips изменить размер изображения и записать новую информацию непосредственно в имя файла.

Кто-нибудь знает, как я могу извлечь информацию из ширины и высоты и использовать ее вместе с mv?

1 ответ

Решение

Я сам это выяснил. Теперь это хороший сценарий bash. Может быть, не так элегантно, но это работает - это также доступно как GistHub.

НОВАЯ ВЕРСИЯ СПАСИБО ЗА СОВЕТОМ - СМОТРЕТЬ КОММЕНТАРИИ

#!/bin/bash
#
#   1. This script copies all *.jpg-files to a new folder
#   2. Jumps into folder and resizes all files with sips
#   3. Renames all files and uses information from sips
#
folder="resized_and_renamed"

mkdir -p "$folder"

cp *.jpg "$folder"

cd "$folder"

# RESIZE ALL IMAGES TO MAXIMUM WIDTH/HEIGHT OF 360
sips -Z 360 *.jpg

# RENAME FILES WITH INFORMATION FROM SIPS
for i in *.jpg
  do
    pixelWidth=$(sips -g pixelWidth "$i" | awk '/pixelWidth:/{print $2}')
    pixelHeight=$(sips -g pixelHeight "$i" | awk '/pixelHeight:/{print $2}')
    # REMOVE EXTENSION
    filename=${i%.jpg}
    # NOW RENAME
    mv $i ${filename##*/}-${pixelWidth}x${pixelHeight}.jpg
  done
Другие вопросы по тегам