终端:使用来自 sips 的图像信息来重命名文件
Terminal: Use image information from sips for renaming files
命令 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
一起使用?
我自己发现的。现在是一个不错的 bash 脚本。也许不那么优雅,但它确实有效——它也可以作为 gist on GitHub.
新版本感谢建议——查看评论
#!/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 }')
pixelHeight=$(sips -g pixelHeight "$i" | awk '/pixelHeight:/{print }')
# REMOVE EXTENSION
filename=${i%.jpg}
# NOW RENAME
mv $i ${filename##*/}-${pixelWidth}x${pixelHeight}.jpg
done
命令 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
一起使用?
我自己发现的。现在是一个不错的 bash 脚本。也许不那么优雅,但它确实有效——它也可以作为 gist on GitHub.
新版本感谢建议——查看评论
#!/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 }')
pixelHeight=$(sips -g pixelHeight "$i" | awk '/pixelHeight:/{print }')
# REMOVE EXTENSION
filename=${i%.jpg}
# NOW RENAME
mv $i ${filename##*/}-${pixelWidth}x${pixelHeight}.jpg
done