linux - 从每个目录复制 png,如果 png 大于 600x600?

标签 linux bash awk

我有一个目录树,每个目录都有 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/

相关文章:

linux - 了解 grep 的行为

linux - 如何使用 tr 替换 '--' 字符串

bash - unix shell 脚本 - jot -r 1 1 4 是什么意思?我可以用 seq 替换 jot 吗?

linux - 包 'docker.io' 没有安装候选

linux - 如何在不安装 perlbrew 的情况下指定用于脚本的 perl 版本

Linux - 使应用程序在不同显示器上的终端启动中启动

linux - 使用 sed 替换 yaml 文件中的键/值

linux - 取消共享系统调用不起作用

linux - 显示文件中正则表达式超过 'n' 次的行

linux - awk 脚本中的 $0 和 $1(美元符号 0 和 1)是什么?