1.02.2標準
/var/tmp以下から、100MiBより大きい通常ファイルを検索する。
GNU findの条件として適切なのはどれか。
× 不正解
GNU findの-size +100Mは100MiBより大きい対象を選ぶ。符号なしは同じ単位数、-は小さい側である。
詳細解説
正しい
find /var/tmp -type f -size +100M+は指定単位数より大きいことを表し、MはMiB単位を表す。
正しい。-sizeの+は指定値を超える側を選び、MはGNU findでMiB単位を表す。
誤り
find /var/tmp -type f -size 100M100M単位ブロックへ丸めた値がちょうど100の対象で、超過条件ではない。
誤り。符号なしは同じ単位数という判定であり、100MiBより大きいという比較を表さない。
誤り
find /var/tmp -type f -size -100M-は指定値より小さい条件を表す。
誤り。-の接頭辞は指定値より小さい側を選び、要求と比較方向が逆になる。
誤り
find /var/tmp -type f -mtime +100更新からの日数を条件にし、サイズを調べない。
誤り。-mtimeはファイル内容の最終更新からの日数を調べ、容量条件ではない。
実際に確かめる
一時的な検証環境で実行できる例です。
tmp=$(mktemp -d); truncate -s 101M "$tmp/large"; truncate -s 50M "$tmp/small"; find "$tmp" -type f -size +100M -printf '%f\n'; rm -rf "$tmp"期待される結果
large理解のポイント
- +はより大きい
- MはMiB単位
- -mtimeは時刻条件
確認時の注意
- 確認環境: GNU findutils 4.x / sparse一時ファイル
- 検証では実領域をほぼ消費しないsparse一時ファイルを使う。
基礎のおさらい
単位と丸め
find -sizeは指定単位へ切り上げて比較するため、境界条件では単位の意味を確認する。
sparse file
見かけのサイズと実ディスク使用量が異なるファイルもあり、-sizeはファイル長を基に判定する。
問題IDKL-101-402
確認環境GNU findutils 4.x / sparse一時ファイル
最終技術確認2026-08-13
誤り・権利侵害を報告