如果png> 600x600,则从每个目录复制png?

San*_*ing 2 linux bash awk

我有一个目录树,每个目录都有png文件.

我想从每个目录中复制那些分辨率>(600x600)的png文件.

使用以下命令可以创建一个可以做到这一点的脚本,但它会相当长.

此命令将列出png的水平像素数> 600.

for f in *.png;do if [ `file $f | cut -f5 -d\ ` -gt 600 ] ; then echo $f;fi;done
Run Code Online (Sandbox Code Playgroud)

此命令将查找所有dirs并将file.png复制到它们

find <basedir>/ -type d -exec cp file.png '{}' \;
Run Code Online (Sandbox Code Playgroud)

有人知道解决这个问题的好方法吗?

更新:这就是我得到的.

for f in $(find . -type f -name *png -print0); do
    identify -format '%w %h' $f|awk '{print $1 $2}'

# if [$1 -gt 600 && $2 -gt 600]; then
    cp $f ~/600x600
    fi

done
Run Code Online (Sandbox Code Playgroud)

我如何在-statement中使用$1$2来自?awkif

Jea*_*aud 5

我真的不太明白这个问题,但我想你想要将大小超过600x600的文件复制到一个特定的目录中,然后你可以做类似的事情:

for f in *.png;do if [[ `file $f | cut -f5 -d\ ` -gt 600 ]] ; then 
echo $f;fi;done|nawk '{print "cp "$1" my_specific_directory"}' | bash
Run Code Online (Sandbox Code Playgroud)

其中my_specific_directory是您要复制png的目录...