フォルダに約10,000個のファイルがあるとしましょう。私は時間ごとのcrontabを使用して、過去60分以内に変更されたファイルを見つけて処理しました。
find -mmin -60
01: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分が経過しても、まだ一致します。find
sleep 120
a
-mmin
POSIXではないため、実装によって異なりますが、上記の動作が予想されます。
答え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
コマンドの開始時間以降に変更されたファイルを検索できることを示します。