আপনি fx
উচ্চতা / প্রস্থের উপর ভিত্তি করে চিত্রগুলি ফিল্টার করতে অপারেটরটিও ব্যবহার করতে পারেন
identify -format '%[fx:(h>400 && w>400)]\n' image.png
1
চিত্রটি এর চেয়ে বড় হলে 400x400
এবং 0
এটির চেয়ে সমান বা ছোট হলে আউটপুট হবে 400x400
...
বুদ্ধিমান ফাইলের নাম ধরে নেওয়া (কোনও নতুন লাইন / স্পেস / ট্যাব ইত্যাদির নয়) আপনি identify
পূর্বের চিত্রের নাম মুদ্রণ করতে ব্যবহার করতে পারেন 1:
বা 0:
আউটপুট মুছে ফেলার প্রক্রিয়াগুলি শুরু করে যা বাকি রেখাগুলির 0:
শীর্ষস্থানীয় অপসারণ করে 1:
কেবল ফাইলের নাম থেকে যায়, একটি প্রতি লাইন, তারপরে সেই তালিকাটি পাইপ করুন mogrify ... @-
( @
সিনট্যাক্সটি এতে যুক্ত হয়েছিল imagemagick v6.5.2
):
identify -format '%[fx:(h>400 && w>400)]:%i\n' ./*.png | \
sed '/^1:/!d;//s///' | mogrify -resize '400x400' -- @-
অন্যথায়, find
আপনি কেবল আকারে> 400x400 ফাইলগুলি মুদ্রণ করতে পারবেন এবং তারপরে ফলাফলটি xargs
+ এ পাইপ করতে পারতেন mogrify
(এটি প্রতিটি ফাইলে শেল চালানোর কারণে এটি কম দক্ষ তবে এটি সমস্ত ধরণের ফাইলের নামের সাথে কাজ করা উচিত):
find . -maxdepth 1 -type f -name '*.png' -exec sh -c \
'identify -format "%[fx:(h>400 && w>400)]\n" "$0" | grep -q 1' {} \; -print0 \
| xargs -0 mogrify -resize '400x400'
আপনি যদি কোনও zsh
ব্যবহারকারী হন তবে এই উত্তরটিও দেখুন ।