この記事はアピリッツの技術ブログ「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時を基準にするので、図にするとこのようになります。
図にするとよりわかりやすいですね。以上になります。