العثور على صور PNG أكبر من x بكسل عبر نظام التشغيل Linux
عندما تحاول العمل على تغيير تصميم موقع الويب الخاص بك ، يجب أن تكون مهتمًا بعرض الصور في محتوى مقالتك. لقد حصلت على لقطات كبيرة معروفة على معظم المقالات التي قمت بكتابتها ، لذا إذا كنت أريد زيادة الشريط الجانبي ، فمن الأهمية بمكان معرفة أي الصور ستكون واسعة جدًا بحيث لا تتناسب مع التصميم الجديد.
بما أنني مبرمج ، سيكون من السهل علي كتابة تطبيق صغير للقيام بذلك ، لكنه جعلني أبدأ في التفكير ... لماذا لا يمكنني القيام بذلك على سطر أوامر Linux?
أول شيء توصلت إليه هو أن صور PNG تعرض بيانات الحجم عند تشغيل الأمر "file" عليها:
$ file image3.png
image3.png: بيانات صورة PNG ، 613 × 657 ، 8 بت / ألوان RGBA ، غير متشابك
مفيد جدًا لأن 99٪ من الصورة على هذا الموقع بتنسيق PNG. حتى الآن لرميها في حلقة لجميع الملفات في دليل التحميل الخاص بي:
$ for f in * .png؛ do file $ f؛ done
image.png: بيانات صورة PNG ، 631 × 185 ، 8 بت / ألوان RGBA ، غير متشابك
image1.png: بيانات صورة PNG ، 631 x 96 ، 8 بت / ألوان RGBA ، غير متشابك
image10.png: بيانات صورة PNG ، 375 × 395 ، 8 بت / ألوان RGBA ، غير متشابك
image11.png: بيانات صورة PNG ، 484 × 241 ، 8 بت / ألوان RGBA ، غير متشابك
-مقصوص-
هذا أكثر فائدة ، لكن يجب عليّ سحب البيانات إلى Excel أو تطبيق مشابه من أجل فرز البيانات ، لذلك قررت استخدام الأمر "قطع" linux لسحب عمود العرض فقط.
ستلاحظ المعلمة -f5 تخبر قص لاتخاذ العمود الخامس ، و-d \ بمسافة بعد أن تخبر قطع لاستخدام مساحة كمحدد. يعد حرف الشرطة المائلة \ حرف هروب لإخبار shell باستخدام المساحة كحرف ، وليس كفضاء أبيض.
$ for f in * .png؛ do file $ f | cut -f5 -d \؛ done
631
631
375
484
-مقصوص-
ليس الانتاج مفيد تماما ، أليس كذلك؟ دعونا دفع ذلك من خلال bash if statement ، ومن ثم إظهار إخراج الأمر الملف فقط عندما يكون العرض أكبر من 600 بكسل.
لاحظ علامات "(backtick) حول" الملف $ f | المقطع "… cut ، الذي يشير إلى أن الأوامر الموجودة داخل" ستتم معالجتها كمخرج فردي ويتم إدخالها في بيان if ، حيث نستخدم -gt (أكبر من). لاحظ أيضًا أنك تحتاج إلى مسافات حول جانبي الأقواس []
لـ f in * .png؛ do if ['file $ f | cut -f5 -d \ '-gt 600]؛ ثم ملف $ f ؛ fi ؛ تم
image.png: بيانات صورة PNG ، 631 × 185 ، 8 بت / ألوان RGBA ، غير متشابك
image1.png: بيانات صورة PNG ، 631 x 96 ، 8 بت / ألوان RGBA ، غير متشابك
image17.png: بيانات صورة PNG ، 638 x 340 ، 8 بت / ألوان RGBA ، غير متشابك
image18.png: بيانات صورة PNG ، 608 × 448 ، 8 بت / ألوان RGBA ، غير متشابك
-مقصوص-
الآن لدينا قائمة بجميع الملفات أكبر من 600 بكسل. يمكنك ضبط "الملف $ f" في النهاية لترديد أسماء الملفات فقط إذا كنت بحاجة إلى نسخها أو نقلها إلى مكان آخر:
لـ f in * .png؛ do if ['file $ f | cut -f5 -d \ '-gt 600]؛ ثم صدى $ f ؛ fi ؛ القيام به
image.png
image1.png
image17.png
image18.png
-مقصوص-
قذيفة لينكس قوية بشكل لا يصدق! هذا الحل ليس عمليًا حقًا للجميع ، ولكن من الجيد معرفة كيفية العمل مع الغلاف حتى تتمكن من إنجاز هذا النوع من المهام عندما تحتاج إلى.