对于find 参数一个错误认识(unix版本问题)

来源:互联网 发布:小马网络免费空间 编辑:程序博客网 时间:2024/06/05 22:01

在网上搜寻find -size的参数时,通常都会有b,c,k,w 四个参数,但是这通常是指linux

 这句话很重要,因为不同的unix版本,甚至是不同级别同种的unix shell命令都会有不同,

而在solaris中,find - size 就没有b,k,w这两个参数,

不妨看看 man find的结果(部分) -size n[c]         

   True if the file is  n  blocks  long  (512  bytes  per            block).

If n is followed by a c, the size is in bytes.

具体而言,就是find -size就支持c这个参数如果没有,默认就是b,即一个blocks(513字节)

如果乱加一通参数,例如你加上k,w参数,仍然默认为以block来记数

例如下面这个命令,我们是想在当前目录下查到size大于100m的文件

 find . -size +102400m 

 find . -size +100000k

可是在solaries 下运行时,却把那些文件大小只50多兆的也查询出来

why? 分析一下102400m 到底是多少因为此时m是一个废的参数,所以系统仍然以block来计算

而根据man的提示,一个block是512bytes,即0.5k 102400*0.5/1000=51.2m(1m=1000k)

 find . -size +102400m 实际结果是查询size大于51.2m的文件,

所以搜索出一个 size大小为58m就不足为奇矣!