findで指定サイズより大きいもしくは小さいファイルを探す

肥大化したログファイルやユーザがアップロードした動画ファイルなど、パーティションを圧迫しているファイルを探したい場合には、findコマンドのsizeオプションが便利だ。

findコマンドのsizeオプションの引数にファイルサイズを指定することで、特定ディレクトリ以下からファイルサイズを条件に一致するファイルを探すことができる。

指定したファイルサイズより大きいファイルを探す場合は「+」を、
小さいファイルを探す場合は「-」をファイルサイズの前に指定する。

単位はkBが「k」、MB「M」、GB「G」などに対応している。
単位をつけない場合はデフォルトのブロック(512バイト)になる。
(ただし、CentOS 6 以下のバージョンでは、「M」, 「G」に対応していないので、大きいファイルサイズを指定する場合でも「k」を使う必要がある。)

# 100MBを超えるログファイルを探す
find /var/log -size +100M 

# ホームディレクトリで1GBを超えるファイルを探す
find /home -size +1G

# カレントディレクトリ以下で 100kB未満のファイルを探す
find . -size -100k

`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)

find(1)

ちなみに小さいファイルを探すときに、-size -1k-size -1M-size -1Gなどを指定しても何も表示されないので注意すること。
(1バイトのファイルでも指定した単位に丸められて1未満に該当しなくなるため。)

bear in mind that the size is rounded up to the next unit (so a 1-byte file is not matched
by -size -1M).

find(1)