Linuxとコマンドラインの基礎
GNU の find で「find /data -name "*.log" -mtime +7 -size +100M」を実行したときに見つかるファイルの説明として、正しいものはどれか。
- A名前が .log で終わり、最後の更新が8日以上前で、大きさが100 MiBを超えるファイル
- B名前が .log で終わり、最後の更新が7日以内で、大きさが100 MiBを超えるファイル
- C名前が .log で終わり、作成されたのが8日以上前で、大きさが100 MiBを超えるファイル
答えと解説を見る
正解:A. 名前が .log で終わり、最後の更新が8日以上前で、大きさが100 MiBを超えるファイル
-name "*.log" は名前が .log で終わるもの、-mtime は中身を最後に更新した時刻、-size +100M は大きさが100 MiBを超えるものを選びます。-mtime は経過時間を24時間単位で数えて端数を切り捨てた日数で比べるので、+7 は「7より大きい」、つまり8日(192時間)以上経ったものになり、7日と23時間しか経っていないファイルは選ばれません。7日以内に更新したものは -mtime -7 で選びます。*.log を引用符で囲むのは、シェルが先にカレントディレクトリのファイル名に展開してしまわないようにするためです。
- A. 正しい。+7 は端数を切り捨てた日数が7より大きい、つまり8日以上を表します。
- B. 7日以内に更新したファイルを選ぶのは -mtime -7 です。+ は「より大きい」、- は「より小さい」を表します。
- C. -mtime は作られた時刻ではなく、中身を最後に更新した時刻で比べます。