我有一个目录树,每个目录都有 png 文件。
我想从每个目录复制分辨率为 >(600x600) 的那些 png 文件。
使用以下命令我可以创建一个脚本来执行此操作,但它会相当长。
此命令将列出水平像素数大于 600 的 png。
for f in *.png;do if [ `file $f | cut -f5 -d\ ` -gt 600 ] ; then echo $f;fi;done
此命令将找到所有目录并将 file.png 复制到它们
find <basedir>/ -type d -exec cp file.png '{}' \;
有人知道解决这个问题的好方法吗?
更新: 这就是我得到的。
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
如何在 if
语句中使用 awk
的 $1
和 $2
?
最佳答案
我不太确定是否理解这个问题,但我猜您想将大小大于 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
其中 my_specific_directory 是您要将 png 复制到的目录...
关于linux - 从每个目录复制 png,如果 png 大于 600x600?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6011795/