最近在学习Linux下命令,偶尔发现网上不少对于find -size命令的解释都是错误的。
比如查找当前目录下文件大小小于1k的文件:find . -size -1k (这是错误的),你会发现什么都找不到。
接下来的说明都是在ubuntu的虚拟机下做的。
首先:ls -lh
-l:以长格式显示目录下的内容列表。
-h:使用比较接近文件大小的单位显示。
可以发现,client文件夹里共有9个文件(4个小于1k的,2个介于1k和2k之间的,3个大于2k的)
① 三种情况
结果显示如上图。发现第一条命令以为可以找到“查找当前目录下文件大小小于1k的文件”,结果查找结果为空。
② 我们来看find . -size -#SIZE到底是查找多少大小范围内的文件
对比发现,下面比上面多找到了一个文件(红框内),而由上面可知client_interface.c的大小刚好为5.0k。
是因为find . -size -#SIZE查找的是【0,#SIZE-1】大小的文件。
例如find . -size -6k查找的文件大小为【0,5】,两边都是闭。
③ find . -size +#SIZE
发现只有13k的client文件被找到,5.0k的client_interface.c没有被找到。
是因为find . -size +#SIZE查找的是(#SIZE,正无穷),不包含#SIZE大小的。
④ find . -size #SIZE
发现只有5.0k的client_interface.c被找到。
是因为find . -size #SIZE查找的是(#SIZE-1,#SIZE】,左开右闭。
⑤总结:
find -size [+|-]#SIZE,常用单位:k,M,G。
#SIZE:(#SIZE-1,#SIZE】
- #SIZE:【0,#SIZE-1】
+#SIZE:(#SIZE,正无穷)
这是我第一次在CSDN上写博客,欢迎大家指正。