是否有可能列出一個目錄中像素尺寸大于或小于x的所有圖片? 我在另一個主題上發現了這個命令
find . -name '*.png' -exec file {}; | sed 's/( . *png): .* ([0-9]* x [0-9]*).*/2 1/' | awk 'int(1) < 250 {print}'
這條命令對*.png很有效,但當我把它改為*.jpg時,結果就變得太瘋狂了。我想把結果寫到一個日志檔案中,這樣我以后就可以從我的產品目錄中洗掉這些圖片。
*.png輸出
50 x 50 ./data/catalog/agsquare.png
220 x 138 ./data/catalog/[email protected]
3 x 3 ./data/catalog/dots.png
98 x 98 ./data/catalog/grid-noise.png
*jpg輸出(像素大小被忽略,這個命令顯然有問題)
./data/background/fashion-shirt.jpg。JPEG影像資料,JFIF標準1.01,長寬比,密度1x1,段長16,基線,精度8,1920x1440,幀數3
./data/background/grey-bag.jpg。JPEG影像資料,JFIF標準1.01,長寬比,密度1x1,段長16,基線,精度8,1920x1280,幀3
作業系統: Ubuntu 18.04.5 LTS
uj5u.com熱心網友回復:
file對于PNG來說輸出1 x 2,但是對于JPEG來說輸出1x2。你的命令希望有這些空格。
相反,使用像ImageMagick的identify這樣的工具,可以以獨立于格式的方式完成這個任務:
find . ( -name '*.jpg'/span> -o -name '*.png'/span> )
-exec identify -format '%w%h%i
' {} |
awk '$1 < 250'
uj5u.com熱心網友回復:
按照從最簡單到最重量級的順序,你有幾個選擇:
fehexiftoolffprobe - ffmpegidentify根據Ubuntu軟體包庫,你應該在Ubuntu 18 LTS中安裝
feh,所以你可以使用:
feh -L "%f:%w:%h" *.jpg *.png
輸出示例
small.png:10:10
red.jpg:8:8
redhat.jpg:254:255
注意feh也接受min-dimension和max-dimension作為過濾器。因此,對于所有寬度超過640 px的圖片,請使用:
feh --min-dimension 640x0 -L "%f:%w:%h"/span> *.jpg *.png
你也可以使用exiftool來尋找和列印高度或寬度小于100px的影像,像這樣:
exiftool -p '$filename:$imagewidth: $imageheight' -if '$imagesize and ($imagewidth<100 or $imageheight<100)' -q *. jpg *.png
示例輸出
black.jpg:8:8
紅色.jpg:8:8
small.png:10:10
如果你使用的是源自Redmond的任何"作業系統",請將單引號改為雙引號。
注意,exiftool是一個明顯小的安裝比ImageMagick。
Ubuntu 18 LTS也應該包括
ffmpeg和它的小伙伴ffprobe,所以你可以做到:
ffprobe -v error -select_streams v -show_entries stream=width,height -of csv=p=0:s=x IMAGEFILE
或者用ImageMagick,用這個來尋找寬度<100的圖片:
magick identify -format '%f:%w:%h
' *png *jpg | awk -F: '2<100'
uj5u.com熱心網友回復:
感謝另一個人,我去掉了x周圍的空格,就成功了。沒有提到我不想使用任何工具,在我的服務器上找不到其他命令。
find 。-name '*.jpg' -exec file {} ; | sed 's/( . *jpg): .* ([0-9]*x[0-9]*).*/2 1/' | awk 'int(1) < 250 {print}'
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/327312.html
標籤:
