Laman » bagaimana untuk » Mencari Imej PNG Lebih Besar Daripada x Pixels Melalui Shell Linux

    Mencari Imej PNG Lebih Besar Daripada x Pixels Melalui Shell Linux

    Apabila anda berusaha untuk mengubah reka bentuk laman web anda, anda perlu bimbang dengan lebar gambar dalam kandungan artikel anda. Saya telah mendapat screenshot besar pada sebahagian besar artikel yang saya tulis, jadi jika saya mahu menambah bar sisi, penting untuk mengetahui gambar mana yang akan terlalu luas agar sesuai dengan reka bentuk baru.

    Sejak saya seorang pengaturcara, mudah bagi saya untuk menulis permohonan kecil untuk melakukan ini, tetapi ia membuat saya mula berfikir ... mengapa saya tidak boleh melakukan ini pada baris arahan Linux?

    Perkara pertama yang saya tahu ialah imej PNG memaparkan data saiz apabila anda menjalankan arahan "fail" pada mereka:

    $ file image3.png
    image3.png: data imej PNG, 613 x 657, 8-bit / warna RGBA, tidak bersambung

    Sangat berguna sejak 99% gambar di laman web ini dalam format PNG. Jadi sekarang untuk membuangnya dalam gelung untuk semua fail dalam direktori muat naik saya:

    $ untuk f dalam * .png; lakukan fail $ f; selesai

    image.png: data imej PNG, 631 x 185, 8-bit / warna RGBA, tidak bersambung
    image1.png: data imej PNG, 631 x 96, 8-bit / warna RGBA, tidak bersambung
    image10.png: data imej PNG, 375 x 395, 8-bit / warna RGBA, tidak bersambung
    image11.png: data imej PNG, 484 x 241, 8-bit / warna RGBA, tidak bersambung
    -snipped-

    Ini lebih berguna, tetapi saya perlu tarik data ke dalam Excel atau aplikasi yang sama untuk menyusun data, jadi saya memutuskan untuk menggunakan arahan "cut" linux untuk mengeluarkan hanya lajur lebar.

    Anda akan melihat parameter -f5 memotong untuk mengambil lajur kelima, dan -d \ dengan ruang selepas memotong untuk menggunakan ruang sebagai pembatas. The slash \ character adalah karakter melarikan diri untuk memberitahu shell untuk menggunakan ruang sebagai watak, dan bukan sebagai ruang kosong.

    $ for f dalam * .png; lakukan fail $ f | cut -f5 -d \; selesai

    631
    631
    375
    484
    -snipped-

    Bukan output yang sepenuhnya berguna, bukan? Mari kita tekankan itu melalui bash jika pernyataan, dan kemudian hanya menunjukkan output arahan fail apabila lebarnya lebih besar daripada 600 piksel.

    Perhatikan tanda '(backtick) sekitar "fail $ f | cut ... ", yang menunjukkan bahawa arahan di dalam 'akan diproses sebagai output tunggal dan dimasukkan ke dalam pernyataan jika, di mana kita menggunakan -gt (lebih besar daripada). Juga perhatikan bahawa anda memerlukan ruang di sekeliling kedua kurungan []

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

    image.png: data imej PNG, 631 x 185, 8-bit / warna RGBA, tidak bersambung
    image1.png: data imej PNG, 631 x 96, 8-bit / warna RGBA, tidak bersambung
    image17.png: data imej PNG, 638 x 340, 8-bit / warna RGBA, tidak bersambung
    image18.png: data imej PNG, 608 x 448, 8-bit / warna RGBA, tidak bersambung
    -snipped-

    Sekarang kita mempunyai senarai semua fail yang lebih besar daripada 600 piksel lebar. Anda boleh menyesuaikan "fail $ f" di hujungnya untuk mengulangi nama fail jika anda perlu menyalin atau memindahkannya ke tempat lain:

    untuk f dalam * .png; lakukan jika ['fail $ f | cut -f5 -d \ '-gt 600]; kemudian echo $ f; fi; selesai

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

    Shell Linux sangat kuat! Penyelesaian ini tidak benar-benar praktikal untuk semua orang, tetapi ia adalah baik untuk mengetahui bagaimana untuk bekerja dengan shell supaya anda dapat menyelesaikan tugas jenis ini apabila anda perlu.