linux 根据文件大小查找文件
linux下的find命令用来查找文件,通过man find就知道它是无所不能的。所以按照文件大小来查找文件就不在话下。从man find搜索size,可以看到如下信息:
-size n[cwbkMG] File uses n units of space. The following suffixes can be used: b for 512-byte blocks (this is the default if no suffix is used) c for bytes w for two-byte words k for Kilobytes (units of 1024 bytes) M for Megabytes (units of 1048576 bytes) G for Gigabytes (units of 1073741824 bytes)
注意:默认单位是b,而它代表的是512字节,所以2表示1K,1M则是2048,如果不想自己转换,可以使用其他单位,如c、K、M等。
例子:查找当前目录下文件大小为2048(2k)字节的文件
find ./ -size 4 或 find ./ -size 2048c 或 find ./ -size 2K
上述查找文件是等于指定大小的,那能不能查询大于或小于某个指定值的文件呢,答案是肯定,例如:
查找大于2K的文件,+ 表示大于 find ./ -size +2048c 查找小于2K的文件,- 表示小于 find ./ -size -2048c
查找大小在某个范围内的文件使用-size参数,-size +n表示大于n单位的范围,-size –n表示小于n单位的范围。例如,查找大于100k且小于400k的文件:
find . -type f -mtime -1 -size +100k -size-400k
说明:
-type f表示只查找文件,过滤掉文件夹,块文件等。
将查出来的文件以详细列表形式显示出来
find . -type f -mtime -1 -size +100k -size-400k | xargs ls –l
-size参数说明:
-sizen[cwbkMG]
File uses n units of space,rounding up. The following suffixes
can be used:
`b' for 512-byte blocks (this is the default if no suffix is
used)
`c' for bytes
`w' for two-byte words
`k' for Kilobytes (units of 1024 bytes)
`M' for Megabytes (units of 1048576 bytes)
`G' for Gigabytes (units of 1073741824 bytes)
备注:计算机单位
位、字节、字、KB、MB
位:“位(bit)”是电子计算机中最小的数据单位。每一位的状态只能是0或1。
字节:8个二进制位构成1个“字节(Byte)”,它是存储空间的基本计量单位。1个字节可以储存1个英文字母或者半个汉字,换句话说:1个汉字占据2个字节的存储空间。
字:“字”由若干个字节构成,字的位数叫做字长,不同档次的机器有不同的字长。例如一台8位机,它的1个字就等于1个字节,字长为8位。如果是一台16位机,那么,它的1个字就由2个字节构成,字长为16位。字是计算机进行数据处理和运算的单位。
KB:K表示1024,也就是2的10次方。1KB表示1K个Byte,也就是1024个字节。
MB:1MB = 220 Bytes = 1048576Bytes
• 1 byte(B) = 8 bits (b)
• 1 Kilobyte(K/KB) = 10 e3bytes = 1,000 bytes
• 1 Megabyte (M/MB) = 10 e6bytes = 1,000,000 bytes
• 1 Gigabyte (G/GB) = 10 e9bytes = 1,000,000,000 bytes
• 1 Terabyte (T/TB) = 10 e12bytes = 1,000,000,000,000 bytes