Beranda » bagaimana » Menemukan Gambar PNG Lebih Besar Dari x Piksel Melalui Linux Shell

    Menemukan Gambar PNG Lebih Besar Dari x Piksel Melalui Linux Shell

    Ketika Anda berusaha mengubah desain situs web Anda, Anda harus khawatir dengan lebar gambar dalam konten artikel Anda. Saya memiliki tangkapan layar yang sangat besar di sebagian besar artikel yang saya tulis, jadi jika saya ingin menambah bilah sisi, penting untuk mengetahui gambar mana yang akan terlalu lebar untuk muat dalam desain baru..

    Karena saya seorang programmer, akan mudah bagi saya untuk menulis aplikasi kecil untuk melakukan ini, tetapi itu membuat saya mulai berpikir ... mengapa saya tidak bisa melakukan ini di baris perintah Linux?

    Hal pertama yang saya tahu adalah bahwa gambar PNG menampilkan data ukuran ketika Anda menjalankan perintah "file" pada mereka:

    $ file image3.png
    image3.png: Data gambar PNG, 613 x 657, 8-bit / warna RGBA, non-interlaced

    Sangat berguna karena 99% gambar di situs ini dalam format PNG. Jadi sekarang untuk melemparkannya dalam satu lingkaran untuk semua file di direktori unggahan saya:

    $ untuk f di * .png; lakukan file $ f; selesai

    image.png: data gambar PNG, 631 x 185, 8-bit / warna RGBA, non-interlaced
    image1.png: data gambar PNG, 631 x 96, 8-bit / warna RGBA, non-interlaced
    image10.png: Data gambar PNG, 375 x 395, 8-bit / warna RGBA, non-interlaced
    image11.png: data gambar PNG, 484 x 241, 8-bit / warna RGBA, non-interlaced
    -terpotong-

    Ini lebih berguna, tetapi saya harus menarik data ke Excel atau aplikasi serupa untuk mengurutkan data, jadi saya memutuskan untuk menggunakan perintah "potong" linux untuk menarik hanya kolom lebar.

    Anda akan melihat parameter -f5 memberi tahu cut untuk mengambil kolom kelima, dan -d \ dengan spasi setelahnya memberitahu cut untuk menggunakan spasi sebagai pembatas. Karakter slash \ adalah karakter pelarian untuk memberitahu shell untuk menggunakan spasi sebagai karakter, dan bukan sebagai spasi.

    $ untuk f di * .png; lakukan file $ f | cut -f5 -d \; selesai

    631
    631
    375
    484
    -terpotong-

    Tidak sepenuhnya hasil yang bermanfaat, bukan? Mari kita mendorong itu melalui pernyataan bash if, dan kemudian hanya menampilkan output dari perintah file ketika lebarnya lebih besar dari 600 piksel.

    Perhatikan tanda '(backtick) di sekitar “file $ f | cut… ”, yang menunjukkan bahwa perintah di dalam 'akan diproses sebagai output tunggal dan dimasukkan ke dalam pernyataan if, di mana kita menggunakan -gt (lebih besar dari). Perhatikan juga bahwa Anda membutuhkan ruang di kedua sisi tanda kurung []

    untuk f di * .png; lakukan jika ['file $ f | cut -f5 -d \ '-gt 600]; lalu file $ f; fi; selesai

    image.png: data gambar PNG, 631 x 185, 8-bit / warna RGBA, non-interlaced
    image1.png: data gambar PNG, 631 x 96, 8-bit / warna RGBA, non-interlaced
    image17.png: Data gambar PNG, 638 x 340, 8-bit / warna RGBA, non-interlaced
    image18.png: Data gambar PNG, 608 x 448, 8-bit / warna RGBA, non-interlaced
    -terpotong-

    Sekarang kami memiliki daftar semua file dengan lebar lebih dari 600 piksel. Anda dapat menyesuaikan "file $ f" di akhir untuk hanya mengulang nama file jika Anda perlu menyalin atau memindahkannya ke tempat lain:

    untuk f di * .png; lakukan jika ['file $ f | cut -f5 -d \ '-gt 600]; kemudian gema $ f; fi; selesai

    image.png
    image1.png
    image17.png
    image18.png
    -terpotong-

    Shell Linux sangat kuat! Solusi ini tidak benar-benar praktis untuk semua orang, tetapi ada baiknya untuk mengetahui cara bekerja dengan shell sehingga Anda dapat menyelesaikan tugas jenis ini saat Anda perlu.