老男孩教育每日一题-第110天-find命令-size参数

简介:

老男孩教育每日一题-第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


相关文章

热门文章

最新文章