2013-05-26 10 views
31

Bu büyük arşivde .jpg, .gif, .png vb. Gibi birçok grafik resim türü vardır. Tüm türleri bilmiyorum. Nokta uzantısı adlarından bağımsız olarak tüm grafik görüntüleri listeleyebilmek için 'bulmak' bir yolu var mı? Teşekkürler!Linux bul: Bul ile tüm grafik imaj dosyalarını listeleyebilir misiniz?

+1

Korkarım ki tüm uzantıları bulmayı deneyen bir bash betiği yazmanız gerekecek. –

+0

Bir şekilde, dosyanın türünü bilen 'dosya' komutuyla birleştirilebilir mi? – Edward

cevap

39

Bu kandırmasına

find . -name '*' -exec file {} \; | grep -o -P '^.+: \w+ image' 

örnek çıkışını yapmalıdır:

./navigation/doc/Sphärische_Trigonometrie-Dateien/bfc9bd9372f650fd158992cf5948debe.png: PNG image 
./navigation/doc/Sphärische_Trigonometrie-Dateien/6564ce3c5b95ded313b84fa918b32776.png: PNG image 
./navigation/doc/subr_1.jpe: JPEG image 
./navigation/doc/Astroanalytisch-Dateien/Gamma.gif: GIF image 
./navigation/doc/Astroanalytisch-Dateien/deltaS.jpg: JPEG image 
./navigation/doc/Astroanalytisch-Dateien/GammaBau.jpg: JPEG image 
+1

Video için alınabilecek benzer bir yaklaşım var mı? Görünüşe göre "görüntü" ile "video" değiştirilirse, Quicktime ve Matroska formatları atlanır ... –

+1

@ElderGeek Bazı örnekler üzerinde dosya çalıştırabilir ve grep olabileceğim bir metin parçası olup olmadığına bakardım. Awk çözümünün görüntü bölümünde, örneğin/video | image | foo için örneklemi ayırabiliyordunuz./Video dosyasındaki video, resim veya foo kelimelerini içeren tüm dosyaları dosyadan döndürdüler. – f3xy

+0

GIF görüntüsünden nasıl kurtulabileceğime dair herhangi bir fikir veya: JPEG resmi ve sadece dosyanın adı ve yolu ile bırakılabilir, böylece çıktı olarak başka bir komuta iletebilirim? – VaTo

10
find . -type f -exec file {} \; | grep -o -P '^.+: \w+ image' 

daha iyi olmalıdır.

+1

neden bu daha iyidir ? – Selah

20

Aşağıdakiler bana daha iyi uyuyor çünkü benim durumumda bu dosya listesini başka bir programa aktarmak istedim.

find . -type f -exec file {} \; | awk -F: '{if ($2 ~/image/) print $1}' 
+0

Çıktıyı pipetlemek istiyorsanız bu gerçekten varsayılan cevaptır. Teşekkürler! –

3

Sadece "image" için awk kullanmak veya kullanmak awk yapmayacaktır. PSD dosyaları, "I" ile bir sermaye "I" ile tanımlanacaktır, dolayısıyla regexp'i büyük/küçük harfe duyarsız hale getirmemiz veya I. sermayeyi de içermemiz gerekir. EPS dosyaları, "görüntü" kelimesini içermeyecektir. Ne istediğinize bağlı olarak "EPS" veya "Postscript" için de eşleştirmeniz gerekir. Yani burada benim geliştirilmiş bir versiyonu: Aynı soruna İlgili

find . -type f -exec file {} \; | awk -F: '{ if ($2 ~/[Ii]mage|EPS/) print $1}' 
-1

, sadece photofind (https://github.com/trimap/photofind) adında bir araç yayınladı. Normal bul-komutu gibi davranır, ancak görüntü dosyaları için özeldir ve görüntü dosyalarında saklanan EXIF-bilgisine dayanarak sonuçların filtrelenmesini destekler. Daha fazla bilgi için bağlantılı github-repo'ya bakın.

+2

Bir çözüme bağlantıya açığız, ancak cevabın onsuz yararlı olduğundan emin olun: [bağlantı etrafında bağlam ekle] (http://meta.stackexchange.com/a/8259) böylece diğer kullanıcılarınız ne hakkında biraz fikir sahibi olurlar? o ve neden var, o zaman hedef sayfanın mevcut olmaması durumunda linking ettiğiniz sayfanın en alakalı bölümünü alıntı. [Bir linkten biraz daha fazla olan cevaplar silinebilir] (http://stackoverflow.com/help/deleted-answers). – mrun

+0

Bu bağlantı soruyu yanıtlayabilirken, cevabın temel kısımlarını buraya dahil etmek ve referans için bağlantı sağlamak daha iyidir. Bağlantılı sayfa değiştiğinde yalnızca bağlantı yanıtları geçersiz olabilir. - [Review/Review/low-quality-posts/17292640] –

+0

Bu yardımcı program, bir dosya uzantısında biten dosyanın ismine dayanıyor gibi görünüyor. Bu, dosya komutunun çıktısını kontrol etmek kadar güçlü olan bir yer değil.Sağladığınız bağlantıdan, bulunduğunuz yeri bulmak için bir örnek var ('find ~/Pictures \ (-iname" * .jpg "-or -iname" * .jpeg "-or -iname" * .png "-or -iname "* .tif" -ve -iname "* .bmp" -or -iname "* .gif" -or -iname "*. xpm" -ve -iname "* .nef" -or -iname "* .cr2" -ve -iname "* .arw" \) -size + 20k') – f3xy