ホーム 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時を基準にするので、図にするとこのようになります。

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

記事を共有

最近人気な記事