2013-12-13 36 views
0

我有一個或多或少的隨機圖片文件的大文件夾,我用它來顯示桌面背景與Wallch。由於我注意到一些圖片的分辨率太低,看起來不錯,我想擺脫高度在1000像素左右的任何東西。如何從文件夾中刪除低於某個分辨率的圖片

由於我最近開始使用Ubuntu,我懷疑這可以通過在命令行上使用幾行代碼來完成,但是我很缺乏經驗,並且希望避免任何過於災難性的事情,因此請求幫助在我自己試驗之前。

圖片總計約有4場,約3000張圖片,大部分以.png或.jpg結尾,但有時在.JPG中,其中一些最多在3層以下的子文件夾中。

有什麼建議嗎?

回答

3

您可以使用imagemagick及其標識命令。 http://www.imagemagick.org/script/identify.php

例如像一個bash函數,它接受一個文件名作爲參數,調整了minX和MINY

function rmImgBySize 
{ 
    minX=128 
    miny=96 
    xres=`identify -format "%[fx:w]" "$1"` 
    yres=`identify -format "%[fx:h]" "$1"` 
    if [ $xres -lt $minX ] || [ $yres -lt $minY ] 
    then 
    rm "$1" 
    fi 
} 

export -f rmImgBySize 

find /path/to/basedir/with/pictures/ -iname "*.png" -o -iname "*.jpg" -o -iname "*.jpeg" -exec bash -c 'rmImgBySize "$0"' "{}" \; 

的-iname告訴那名matchins應該CASEINSENSITIVE -o告訴「或」

man identify 
man find 
+0

是啊,這看起來像它應該做的伎倆。感謝您的快速回復! – RalleG

3

使用convert from ImageMagick

find -name '*.jpg' -o -name '*.png' -exec \ 
     convert "{}" -print "%w:%h:%d/%f\n" /dev/null \; | \ 
     awk -vFS=: '$1<680||$2<1000{print}' | \ 
     xagrs rm 
+0

* xagrs - > xargs * – ArmaGeddON

0

使用identify from ImageMagick

identify -format "%w:%h:%f\n" * | awk -F : '$2<1000 {print $3}' | xargs rm 

(PS:你必須運行在圖片的目錄命令)

相關問題