Ketika Anda mencoba untuk mengubah desain situs web Anda, Anda harus peduli dengan lebar gambar di konten artikel Anda. Saya punya tangkapan layar yang sangat besar di sebagian besar artikel yang saya tulis, jadi jika saya ingin meningkatkan bilah sisi, sangat penting untuk mencari tahu gambar mana yang akan terlalu lebar agar sesuai dengan 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 dapat melakukan ini pada baris perintah Linux?
Hal pertama yang saya ketahui 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, RGBA 8-bit / warna, non-interlaced
Sangat berguna karena 99% gambar di situs ini dalam format PNG. Jadi sekarang untuk melemparkannya ke dalam loop untuk semua file di direktori upload saya:
$ for f in * .png; lakukan file $ f; selesai
image.png: data gambar PNG, 631 x 185, RGBA 8-bit / warna, non-interlaced
image1.png: data gambar PNG, 631 x 96, RGBA 8-bit / warna, non-interlaced
image10.png: data gambar PNG, 375 x 395, RGBA 8-bit / warna, non-interlaced
image11.png: data gambar PNG, 484 x 241, RGBA 8-bit / warna, non-interlaced
-ditutup-
Ini lebih berguna, tetapi saya harus menarik data ke Excel atau aplikasi serupa untuk mengurutkan data, jadi saya memutuskan untuk menggunakan perintah "cut" linux untuk menarik keluar hanya kolom lebar.
Anda akan melihat parameter -f5 memberitahu memotong untuk mengambil kolom kelima, dan -d \ dengan spasi setelah itu mengatakan dipotong untuk menggunakan spasi sebagai pemisah. Karakter slash \ adalah karakter escape untuk memberitahu shell untuk menggunakan ruang sebagai karakter, dan bukan sebagai spasi.
$ for f in * .png; lakukan file $ f | cut -f5 -d \; selesai
631
631
375
484
-ditutup-
Output tidak sepenuhnya berguna, kan? Mari dorong itu melalui pernyataan bash if, dan kemudian hanya menunjukkan output dari perintah file ketika lebarnya lebih besar dari 600 piksel.
Perhatikan tanda '(backtick) di sekitar “file $ f | potong ... "bagian, 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). Juga perhatikan bahwa Anda perlu spasi di kedua sisi kurung []
untuk f in * .png; lakukan jika ['file $ f | potong -f5 -d \ '-gt 600]; kemudian file $ f; fi; selesai
image.png: data gambar PNG, 631 x 185, RGBA 8-bit / warna, non-interlaced
image1.png: data gambar PNG, 631 x 96, RGBA 8-bit / warna, non-interlaced
image17.png: data gambar PNG, 638 x 340, RGBA 8-bit / warna, non-interlaced
image18.png: data gambar PNG, 608 x 448, RGBA 8-bit / warna, non-interlaced
-ditutup-
Sekarang kami memiliki daftar semua file yang lebih besar dari lebar 600 piksel. Anda dapat menyesuaikan "file $ f" di bagian akhir untuk hanya menggemakan nama file jika Anda perlu menyalin atau memindahkannya ke tempat lain:
untuk f in * .png; lakukan jika ['file $ f | potong -f5 -d \ '-gt 600]; lalu gema $ f; fi; selesai
image.png
image1.png
image17.png
image18.png
-ditutup-
Shell Linux sangat kuat! Solusi ini tidak benar-benar praktis untuk semua orang, tetapi sebaiknya Anda tahu cara bekerja dengan cangkang sehingga Anda dapat menyelesaikan jenis tugas ini saat diperlukan.