我想编写一个小脚本,将所有具有扩展名的文件从目录 A 复制到目录.log
B。所以在我的目录 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 脚本或函数中,以便您可以根据需要使用单个命令来执行它。