Ali*_*ing 0 shell terminal recursion image dimensions
我认为标题应该清楚地解释我正在尝试做什么.我是shell脚本的新手,并设法将一些代码放在一起,但它根本不对 - 我的计算机上的每个文件都被列出
我还想要检查所有图像类型(至少jpg,png和gif)
find "$1" -name ".jpg" | while read imagePath ; do
imageFile=$(basename "$imagePath")
dimensions=$(sips -g pixelHeight -g pixelWidth * )
echo "$videoFile: $dimensions" done
Run Code Online (Sandbox Code Playgroud)
有人可以帮忙吗?谢谢!
这应该很适合你:
#!/bin/bash
find . \( -iname "*.jpg" -o -iname "*.png" -o -iname "*.gif" \) -print0 | \
while read -d $'\0' -r image; do
read w h < <(sips -g pixelWidth -g pixelHeight "$image" | \
awk '/Width:/{w=$2} /Height:/{h=$2} END{print w " " h}')
echo $image $w $h
done
Run Code Online (Sandbox Code Playgroud)
样本输出
./start2.png 640 480
./step2.gif 1 3918
./step2.jpg 1 3918
./step3.gif 2551 1
./survey.gif 2651 4018
./t.jpg 1 463
./tiger.png 258 296
Run Code Online (Sandbox Code Playgroud)
将上述内容保存在一个名为的文件中pics,然后转到终端并键入以下一次以使其可执行:
chmod +x pics
Run Code Online (Sandbox Code Playgroud)
然后,当您想要运行它时,只需键入:
./pics
Run Code Online (Sandbox Code Playgroud)
虽然,就个人而言,我更喜欢ImageMagick SIPS,因为你可以在一行中做类似的事情:
identify -format "%f: %wx%h\n" *.jpg *.gif *.png
Run Code Online (Sandbox Code Playgroud)
样本输出:
7T6Dj.jpg: 1920x1080
a.jpg: 400x463
b.jpg: 400x463
back.jpg: 906x603
background.jpg: 906x603
Run Code Online (Sandbox Code Playgroud)
如果你想在Mac上安装ImageMagick - 使用homebrew它很容易.
更新的答案
如果您只想输出每个图像大小一次,忽略具有相同尺寸的第二个和后续图像,您可以awk在最后添加一些,如下所示:
#!/bin/bash
# Find all types of imagery GIF, JPG, PNG
find . \( -iname "*.jpg" -o -iname "*.png" -o -iname "*.gif" \) -print0 | \
while read -d $'\0' -r image; do
read w h < <(sips -g pixelWidth -g pixelHeight "$image" | \
awk '/Width:/{w=$2} /Height:/{h=$2} END{print w " " h}')
echo $image $w $h
done | awk '{w=$(NF-1); h=$(NF); if(!seen[w SUBSEP h]++)print $0}'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1325 次 |
| 最近记录: |