29Jun
Web sitenizin tasarımını değiştirmeye çalışırken, makale içeriğinizdeki resimlerin genişliği ile ilgilenmeniz gerekir. Yazdıklarımın çoğunda büyük ekran görüntüleri var, bu yüzden kenar çubuğunu artırmak istersem hangi resimlerin yeni tasarıma sığamayacak kadar geniş olacağını bulmak önemlidir.
Bir programcı olduğum için bunu yapmak için küçük bir uygulama yazmam daha kolaydır, ancak düşünmeye başlamamı sağladı. .. neden bunu Linux komut satırında yapamıyorum?
Anladım ilk şey, üzerinde "dosya" komutunu çalıştırdığınızda PNG görüntülerinin boyut verilerini görüntülemesiydi:
$ dosya image3.png
image3.png: PNG resim verileri, 613 x 657, 8 bitlik / renkRGBA, non-interlaced
Bu sitedeki resmin% 99'u PNG formatında olduğundan çok kullanışlı.Şimdi, upload dizininizdeki tüm dosyalar için bir döngüye atmak:
$ for f in *. png; yapmak dosya $ f; done
image.png: PNG resim verileri, 631 x 185, 8 bitlik / renkRGBA, geçmeli
image1.png: PNG resim verileri, 631 x 96, 8 bit / renkli RGBA, geçmeli
image10.png: PNG resim verileri, 375 x 395, 8 bit / renk RGBA, non-interlaced
image1.png:interlaced
image11.png: PNG resim verileri, 484 x 241, 8 bit / renkli RGBA, taramasız
-snipped-
Bu daha kullanışlıdır, ancak verileri Excel'e veya benzer bir uygulamaya çekmeliyimverileri sıralamak için sipariş verdim, bu yüzden sadece genişlik sütununu çıkarmak için linux "cut" komutunu kullanmaya karar verdim.
-f5 parametresinin, beşinci sütunu almaya ve bir ayırıcı olarak bir boşluk kullanmak üzere kesime söyleyip bıraktıktan sonra bir boşluk bırakması gerektiğini bildirirsiniz. Eğik çizgi \ karakteri, kabuğun boşluk yerine bir karakter olarak kullanılmasını söyleyen bir kaçış karakteridir.
$ for f in *. png; dosyayı yapın $ f | kes -f5 -d \; bitti
631
631
375
484
-snipped-
Tamamıyla kullanışlı çıktı değil mi? Bunu bir bash if deyimiyle basalım ve sonra genişlik 600 pikodan büyük olduğunda yalnızca dosya komutunun çıktısını gösterelim.
"dosya $ f | çevresindeki`( backtick) işaretlerine dikkat edin.cut. .. "bölümünde,` içinde bulunan komutların tek bir çıktı olarak işleneceğini ve bir -gt( daha büyük) kullandığımız if ifadesine girdiğini gösterir. Ayrıca köşeli ayraçların her iki yanında boşluklara ihtiyacınız olduğunu unutmayın. []
for f in *. png; if [`file $ f |cut -f5 -d \ `-gt 600];sonra dosyayı $ f; fi yap;
image.png: PNG resim verileri, 631 x 185, 8 bit / renk RGBA, geçmeli
image1.png: PNG resim verileri, 631 x 96, 8 bit / renk RGBA, non-interlaced
image17.png: PNG resim verileri, 638 x 340, 8 bit / renk RGBA, geçmeli
image18.png: PNG resim verileri, 608 x 448, 8 bit / renk RGBA, birbirine geçmeli değil
-snipped-
Şimdi 600 pikselden daha geniş olan tüm dosyaların bir listesi var. Dosyayı kopyalamak veya başka yere taşımak isterseniz sadece dosya adlarını yankılamak için "file $ f" dosyasını ayarlayabilirsiniz:
for f in *. png; if [`file $ f |cut -f5 -d \ `-gt 600];sonra echo $ f; fi; done
image.png
image1.png
image17.png
image18.png
-snipped-
Linux kabuğu inanılmaz derecede güçlü!Bu çözüm herkese gerçekten pratik değil, ancak gövde ile nasıl çalışacağınızı bilmek güzel, böylece ihtiyacınız olduğunda bu tür bir görevi başarabilirsiniz.