Files

按大小查找圖片:find/file/awk

  • July 10, 2016

我一直在嘗試找到一定高度(超過 500 像素)的 png 圖像文件。我知道這file將返回圖像尺寸。例子:

$ file TestImg1a.png

TestImg1a.png: PNG image data, 764 x 200, 4-bit colormap, non-interlaced   

但我需要使用它來查找高度超過 500px 的目錄中的所有文件。我知道如何列印所有文件,無論高度如何:

find . -name '*.png' | xargs file | awk '{print $7 " " $1}'

但是我如何將 7 美元限制為大於 500 的結果?

我知道這有點矯枉過正,但是,這每次都會起作用(即使您的文件名中有空格)並且無論文件如何顯示資訊。

find . -name '*.png' -exec file {} \; | sed 's/\(.*png\): .* \([0-9]* x [0-9]*\).*/\2 \1/' | awk 'int($1) > 500 {print}'

它列印圖片和文件的尺寸

解釋:

  1. find.png 下所有名為 *.png 的文件。並為每個做一個文件
  2. 用於sed僅列印文件名和尺寸,然後重新訂購以首先列印尺寸
  3. 用於awk測試第一個數字(圖片的高度),確保其大於 500,如果是列印尺寸和文件名,則不執行任何操作。
exiftool -q -r -ext png -if '$ImageHeight > 500' -p '$Directory/$FileName' .

引用自:https://unix.stackexchange.com/questions/52906