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