2

该命令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

4

1 回答 1

2

我自己发现了。现在这是一个不错的 bash 脚本。也许不那么优雅,但它确实有效——它也可以作为GitHub 上的一个 gist 获得

新版本感谢建议 - 见评论

#!/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
于 2017-01-16T15:42:36.743 回答