โฮมเพจ » ทำอย่างไร » การค้นหารูปภาพ PNG ที่มีขนาดใหญ่กว่า x พิกเซลผ่านเชลล์ลินุกซ์

    การค้นหารูปภาพ PNG ที่มีขนาดใหญ่กว่า x พิกเซลผ่านเชลล์ลินุกซ์

    เมื่อคุณพยายามที่จะเปลี่ยนแปลงการออกแบบเว็บไซต์ของคุณคุณจะต้องเกี่ยวข้องกับความกว้างของรูปภาพในเนื้อหาบทความของคุณ ฉันมีสกรีนช็อตที่มีขนาดใหญ่ฉาวโฉ่ในบทความส่วนใหญ่ที่ฉันเขียนดังนั้นถ้าฉันต้องการเพิ่มแถบด้านข้างมันสำคัญมากที่จะต้องทราบว่ารูปภาพใดบ้างที่กว้างเกินกว่าจะพอดีกับการออกแบบใหม่.

    เนื่องจากฉันเป็นโปรแกรมเมอร์มันจะง่ายสำหรับฉันที่จะเขียนแอปพลิเคชันขนาดเล็กเพื่อทำสิ่งนี้ แต่มันทำให้ฉันเริ่มคิด ... ทำไมฉันไม่สามารถทำสิ่งนี้ในบรรทัดคำสั่ง Linux?

    สิ่งแรกที่ฉันคิดได้ก็คือภาพ PNG แสดงข้อมูลขนาดเมื่อคุณเรียกใช้คำสั่ง "ไฟล์" ในภาพ:

    $ file image3.png
    image3.png: ข้อมูลภาพ PNG, 613 x 657, 8 บิต / สี RGBA, ไม่มีการสอดประสาน

    มีประโยชน์มากเนื่องจาก 99% ของรูปภาพในเว็บไซต์นี้อยู่ในรูปแบบ PNG ดังนั้นตอนนี้เพื่อโยนมันเป็นวนสำหรับไฟล์ทั้งหมดในไดเรกทอรีอัพโหลดของฉัน:

    $ สำหรับ f ใน * .png; do ไฟล์ $ f; เสร็จแล้ว

    image.png: ข้อมูลภาพ PNG, 631 x 185, RGBA 8-bit / color, ไม่มีการสอดประสาน
    image1.png: ข้อมูลภาพ PNG, 631 x 96, 8 บิต / สี RGBA, ไม่มีการแทรก
    image10.png: ข้อมูลภาพ PNG, 375 x 395, 8 บิต / สี RGBA, ไม่มีการสอดประสาน
    image11.png: ข้อมูลภาพ PNG, 484 x 241, 8 บิต / สี RGBA, ไม่มีการสอดประสาน
    -snipped-

    สิ่งนี้มีประโยชน์มากกว่า แต่ฉันต้องดึงข้อมูลลงใน Excel หรือแอปพลิเคชันที่คล้ายกันเพื่อเรียงลำดับข้อมูลดังนั้นฉันจึงตัดสินใจใช้คำสั่ง "ตัด" ของ linux เพื่อดึงออกจากคอลัมน์ความกว้าง.

    คุณจะสังเกตเห็นว่าพารามิเตอร์ -f5 บอกให้ตัดเพื่อใช้คอลัมน์ที่ห้าและ -d \ ที่มีช่องว่างหลังจากนั้นบอกให้ตัดเพื่อใช้ช่องว่างเป็นตัวคั่น slash \ character เป็นอักขระเลี่ยงการบอกเชลล์ให้ใช้ช่องว่างเป็นอักขระและไม่เป็นช่องว่าง.

    $ สำหรับ f ใน * .png; ทำไฟล์ $ f | cut -f5 -d \; เสร็จแล้ว

    631
    631
    375
    484
    -snipped-

    เอาท์พุทที่มีประโยชน์ไม่ได้ทั้งหมดมันคืออะไร? ลองดันมันผ่าน bash if statement แล้วแสดงผลลัพธ์ของคำสั่ง file เมื่อความกว้างมากกว่า 600 พิกเซล.

    สังเกตเห็นเครื่องหมาย '(backtick) รอบ ๆ “ file $ f | ส่วน cut …” ซึ่งระบุว่าคำสั่งภายใน 'จะถูกประมวลผลเป็นเอาต์พุตเดียวและป้อนเข้าในคำสั่ง if ซึ่งเราใช้ -gt (มากกว่า) นอกจากนี้โปรดทราบว่าคุณต้องการช่องว่างรอบ ๆ ทั้งสองข้างของวงเล็บ []

    สำหรับ f ใน * .png ให้ทำถ้า ['ไฟล์ $ f | ตัด -f5 -d \ '-gt 600]; จากนั้นยื่น $ f; fi; เสร็จแล้ว

    image.png: ข้อมูลภาพ PNG, 631 x 185, RGBA 8-bit / color, ไม่มีการสอดประสาน
    image1.png: ข้อมูลภาพ PNG, 631 x 96, 8 บิต / สี RGBA, ไม่มีการแทรก
    image17.png: ข้อมูลภาพ PNG, 638 x 340, 8 บิต / สี RGBA, ไม่มีการแทรก
    image18.png: ข้อมูลภาพ PNG, 608 x 448, 8-bit / color RGBA, ไม่มีการสอดประสาน
    -snipped-

    ตอนนี้เรามีรายการไฟล์ทั้งหมดที่กว้างกว่า 600 พิกเซล คุณสามารถปรับ“ file $ f” ในตอนท้ายเพื่อสะท้อนชื่อไฟล์ถ้าคุณต้องการคัดลอกหรือย้ายไปที่อื่น:

    สำหรับ f ใน * .png ให้ทำถ้า ['ไฟล์ $ f | ตัด -f5 -d \ '-gt 600]; echo $ f; fi; เสร็จแล้ว

    image.png
    image1.png
    image17.png
    image18.png
    -snipped-

    เปลือก Linux มีประสิทธิภาพอย่างเหลือเชื่อ! โซลูชันนี้ไม่ได้มีประโยชน์สำหรับทุกคน แต่เป็นการดีที่จะรู้วิธีใช้งานเชลล์เพื่อให้คุณสามารถทำงานประเภทนี้ได้เมื่อคุณต้องการ.