Answers:
我知道这有点矫kill过正,但这每次(即使文件名中有空格)都会起作用,无论文件如何显示信息。
find . -name '*.png' -exec file {} \; | sed 's/\(.*png\): .* \([0-9]* x [0-9]*\).*/\2 \1/' | awk 'int($1) > 500 {print}'
并打印图片和文件的尺寸
说明:
find
下所有名为* .png的文件。并为每个文件做一个文件
用于sed
仅打印文件名和尺寸,然后重新排序以首先打印尺寸
用于awk
测试第一个数字(图片的高度),确保其大于500,并且如果是打印尺寸和文件名,则不执行任何操作。
我觉得,除了shell实用程序外,还有其他更合适的方法,例如Perl:
#!/usr/bin/perl
use File::Find;
use Image::Info qw(image_info dim);
find (\&check_height, './');
sub check_height {
my $info = image_info( $_ );
my ($width, $height) = dim( $info );
print $_ . " has height $height\n" if ( $height > 500 );
}
尝试剖析$ 7的花费更少;只需直接获取尺寸即可。是的,您将需要Image :: Info模块,但是,在CentOS / RHEL上,它是一个标准软件包,因此您可以运行yum install perl-Image-Info
。
apt-get install libimage-info-perl
find . -name '*.png' -exec file "{}" \+ | awk -F"(: +PNG image data|,| x )" '$4 > 500 {print $4" "$1}'
96, ./4/45445106_w185.png: 86, ./4/404358x_w185.png: 86, ./4/404341x_w185.png: 80, ./4/475986_w185.png: 621, ./4/481693_w185.png: 667, ./4/42513x_w185.png: 86, ./4/404372x_w185.png: