その他
    ホーム 技術発信 DoRuby findコマンドのmtimeオプションについて

    findコマンドのmtimeオプションについて

    この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

    find コマンドの -mtime オプションを指定することで最後にデータが修正された日時で検索することができます。
    日時の指定方法も色々あるのですが、個人的にわかりづらかったので以下のパターンだとどのような結果になるのか、実際に動かしてみることにしました。


    試すパターン
    find -mtime 日数
    find -mtime +日数
    find -mtime -日数

    結果からいうと、
    find -mtime -3 3日(72時間)前〜現在
    find -mtime 3  3日(72時間)前〜4日(96時間)前
    find -mtime +3 4日(96時間)前〜過去
    こうなります。


    とりあえず、確認用のファイルを適当に作って試してみます。
    touch -t 07140000 0714.txt
    touch -t 07130000 0713.txt
    touch -t 07120000 0712.txt
    touch -t 07110000 0711.txt
    touch -t 07100000 0710.txt
    こんな感じで空のファイルを5つ作成しました。
    ls
    0710.txt  0711.txt  0712.txt  0713.txt  0714.txt

    touch の -t オプションでタイムスタンプを設定しています。
    設定できているか確認してみます。

    atime(最後にファイルにアクセスした時刻)
    % ls -alu
    total 8
    drwxr-xr-x  2 sk sk 4096 2009-07-14 11:34 ./
    drwxr-xr-x  7 sk sk 4096 2009-07-14 11:29 ../
    -rw-r–r–  1 sk sk    0 2009-07-10 00:00 0710.txt
    -rw-r–r–  1 sk sk    0 2009-07-11 00:00 0711.txt
    -rw-r–r–  1 sk sk    0 2009-07-12 00:00 0712.txt
    -rw-r–r–  1 sk sk    0 2009-07-13 00:00 0713.txt
    -rw-r–r–  1 sk sk    0 2009-07-14 00:00 0714.txt

    mtime(最後にファイルを変更した時刻)
    % ls -al
    total 8
    drwxr-xr-x  2 sk sk 4096 2009-07-14 11:32 ./
    drwxr-xr-x  7 sk sk 4096 2009-07-14 11:29 ../
    -rw-r–r–  1 sk sk    0 2009-07-10 00:00 0710.txt
    -rw-r–r–  1 sk sk    0 2009-07-11 00:00 0711.txt
    -rw-r–r–  1 sk sk    0 2009-07-12 00:00 0712.txt
    -rw-r–r–  1 sk sk    0 2009-07-13 00:00 0713.txt
    -rw-r–r–  1 sk sk    0 2009-07-14 00:00 0714.txt

    ctime(最後にファイルを変更した時刻)
    % ls -alc
    total 8
    drwxr-xr-x  2 sk sk 4096 2009-07-14 11:32 ./
    drwxr-xr-x  7 sk sk 4096 2009-07-14 11:29 ../
    -rw-r–r–  1 sk sk    0 2009-07-14 11:32 0710.txt
    -rw-r–r–  1 sk sk    0 2009-07-14 11:32 0711.txt
    -rw-r–r–  1 sk sk    0 2009-07-14 11:32 0712.txt
    -rw-r–r–  1 sk sk    0 2009-07-14 11:32 0713.txt
    -rw-r–r–  1 sk sk    0 2009-07-14 11:32 0714.txt

    大丈夫そうですね。

    ではさっそく以下を試してみます。
    ちなみに実行したの7月14日のお昼頃です。
    find ./ -mtime -3
    find ./ -mtime 3
    find ./ -mtime +3

    結果。
    find ./ -mtime -3
    ./
    ./0714.txt
    ./0713.txt
    ./0712.txt

    find ./ -mtime 3
    ./0711.txt

    find ./ -mtime +3
    ./0710.txt

    図にまとめるとこんな感じでしょうか。

    ではもうひとつ。
    同様の操作をdaystartオプションを付与して試してみます。
    find ./ -daystart  -mtime -3
    find ./ -daystart  -mtime 3
    find ./ -daystart  -mtime +3


    結果。

    find ./ -daystart  -mtime -3
    ./
    ./0714.txt
    ./0713.txt
    ./0712.txt

    find ./ -daystart  -mtime 3
    ./0711.txt

    find ./ -daystart  -mtime +3
    ./0710.txt

    結果は同じですが、0時を基準にするので、図にするとこのようになります。

     図にするとよりわかりやすいですね。以上になります。