KSH : cp 仅基于文件大小

KSH : cp 仅基于文件大小

我想编写一个小脚本,将所有具有扩展名的文件从目录 A 复制到目录.logB。所以在我的目录 A 中,我有:

ls : 
a.log
b.log
c.log

这是我想实现的伪代码:

foreach *.log x do :
    if [stat -c %s pk_copylogs < 10485760]; then 
          cp  A/x  B/x       
    else
          read vANSWER?" >> File x is bigger than 10 MB, would you like to copy it anyway ? Type YES or NO : "
          if [ $vANSWER = "YES"]; then
              cp A/x B/x
          fi
    fi

我这里的主要问题是找到一种方法来实现我的foreach *.log.我怎样才能做到这一点 ?

答案1

您可以通过两个命令来执行此操作:

find A -name "*.log" -size -10485760c -exec cp {} B/ +
find A -name "*.log" -size +10485760c -exec cp -i {} B/ +

第一个查找小于 10485760 的文件并不加区别地进行复制。第二个查找大于 10485760 的文件并交互复制,提示每个副本。

将它们放入 shell 脚本或函数中,以便您可以根据需要使用单个命令来执行它。

相关内容