find mmin X分 - Findが開始された時点、またはFindがファイルを見つけた時点がX分でしたか?

find mmin X分 - Findが開始された時点、またはFindがファイルを見つけた時点がX分でしたか?

フォルダに約10,000個のファイルがあるとしましょう。私は時間ごとのcrontabを使用して、過去60分以内に変更されたファイルを見つけて処理しました。

find -mmin -6001:00:00に電話する

最初のファイルが00:00:00に修正され、01:00:00で検索で簡単に見つけることができるとします。

それでは、10,000番目のファイルも00:00:00に修正されたとしましょう。

しかし、01:10:00 ですそして、Findはまだ10000番目のファイルに到達しようとしています。

それでは、70分後に「find」は00:00:00に変更された10,000番目のファイルを返しますか?

答え1

GNUでは、ファイルなどをfind評価するために使用される参照時間は、-mmin式を解析すると計算され保存されます。findしたがって、起動時に適用されます。

findこれは、これらすべての時間比較が評価されたすべてのファイルに対して同じ時間参照、つまりコマンドラインが解析された時間を使用することを意味します。

答え2

GNU findを仮定すると、テストするのは簡単です。

% mkdir foo; cd foo; touch a b
% find -mmin 1
.
./a
./b
% find -mmin 1 -exec sleep 120 \; -print 
.     # 2 minutes wait before this showed up
./a   # another 2 minutes before this showed up
./b   # and another 2 minutes for this one
% find -mmin 1
%

bしたがって、最後の修正が実行されてから少なくとも4分が経過しても、まだ一致します。findsleep 120a


-mminPOSIXではないため、実装によって異なりますが、上記の動作が予想されます。

答え3

両方の端末で次のコマンドを試してみてください。

ターミナル1:

find /path -mmin -0.017 -printf "$(date) %Tc %p\n" | grep '/path/to/some/file' 

NO2。ターミナル:

touch -d " 0 seconds ago" /path/to/some/file

私たちが得ることができる結果は

Wed Jul 17 11:48:33 IST 2019 Wed 17 Jul 2019 11:48:34 AM IST /path/to/some/file

検索結果の前にコマンドの開始時間を追加します。findコマンドの開始時間以降に変更されたファイルを検索できることを示します。

関連情報