老男孩教育每日一题-第110天-find命令-size参数
1、查找当前目录下以log结尾的大于50k小于2M的普通文件
2、查找当前目录下以log结尾的小于50k大于2M的普通文件
以上两个问题有什么不同?
参考答案:
测试环境:
[root@nfs01 tmp]# pwd /root/tmp [root@nfs01 tmp]# ll -h total 7.4M -rw-r--r-- 1 root root 262 Jul 30 15:45 a.log -rw-r--r-- 1 root root 262 Jul 30 15:46 a.txt -rw-r--r-- 1 root root 626K Jul 30 15:52 b.log -rw-r--r-- 1 root root 626K Jul 30 15:52 b.txt crw-r--r-- 1 root root 20, 5 Jul 30 16:13 ccc -rw-r--r-- 1 root root 2.5M Jul 30 15:55 c.log -rw-r--r-- 1 root root 2.5M Jul 30 15:55 c.txt -rw-r--r-- 1 root root 628K Jul 30 16:03 d.log lrwxrwxrwx 1 root root 5 Jul 30 16:07 d_slink.txt -> d.txt -rw-r--r-- 1 root root 628K Jul 30 16:03 d.txt prw-r--r-- 1 root root 0 Jul 30 16:20 pip.log brw-r--r-- 1 root root 16, 8 Jul 30 16:11 sdb.log srwxr-xr-x 1 root root 0 Jul 30 16:10 s.log drwxr-xr-x 2 root root 4.0K Jul 30 16:06 test.log
查找当前目录下以log结尾的大于50k小于2M的普通文件
[root@nfs01 tmp]# find -type f -name "*.log" -size -2M -size +50k ./d.log ./b.log
问题1比较简单,因为所有的查找条件都是与的逻辑
问题2查找条件中小于50k大于2M是或的逻辑,正常写出来有问题
先看两个错误做法
查找当前目录下以log结尾的小于50k大于2M的普通文件
[root@nfs01 tmp]# find -type f -name "*.log" -size +2M -size -50k ###此处逻辑错误,找不到文件
[root@nfs01 tmp]# find -type f -name "*.log" -size +2M -o -size -50k ###与或逻辑放在一起有问题,找到了不符合条件的文件 . ./c.log ./sdb.log ./s.log ./d_slink.txt ./a.log ./test.log ./pip.log ./a.txt ./ccc
与运算和或运算优先级不同,所以分开两条命令查找
[root@nfs01 tmp]# find -type f -name "*.log" -size +2M ./c.log [root@nfs01 tmp]# find -type f -name "*.log" -size -50k ./a.log
以上两条命令合并(此处类似乘法分配率)
[root@nfs01 tmp]# find -type f -name "*.log" \( -size +2M -o -size -50k \) ./c.log ./a.log
备注
今天是每日一题陪伴大家的第110天,期待你的进步。
对于题目和答案的任何疑问,请在博客评论区留言。
往期题目索引
http://lidao.blog.51cto.com/3388056/1914205
本文转自 李导 51CTO博客,原文链接:http://blog.51cto.com/lidao/1959484