フォルダに約10,000個のファイルがあるとします。私は毎時crontabを使用して、過去60分間に変更されたファイルを見つけて処理しています。
01:00:00にfind -mmin -60
を呼び出します
最初のファイルが00:00:00に変更され、01:00:00の「find」によって簡単に見つけられると仮定します。
次に、10,000番目のファイルも00:00:00に変更されたと仮定します
しかし、は01:10になります:00 そして「find」はまだ10,000番目のファイルに到達するために懸命に働いています
したがって、70分後、「find」は10,000番目を返します00:00:00に変更されたファイル?
回答
GNU find
では、評価に使用される参照時間-mmin
などのファイルは式の解析時に計算されて保存されるため、find
が開始します。
これは、このようなすべての時間比較で、評価されたすべてのファイルに対して同じ時間参照、つまりfind
が使用されることを意味します。コマンドラインを解析しました。
回答
GNUが見つかったとすると、これは簡単にテストできます:
% 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
が最後に変更されたのは、find
が実行されてから少なくとも4分後ですがivid = a
の “01d8eb925d”>
は、まだ一致しています。
-mmin
は「tPOSIX、これは実装次第ですが、上記の動作を期待しています。
コメント
<の両方のファイルが表示されます。 / div>
回答
2つの端末で次のコマンドを次々に試してください
端末1:
find /path -mmin -0.017 -printf "$(date) %Tc %p\n" | grep "/path/to/some/file"
ターミナル2:
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
は、コマンドの開始時刻以降に変更されたファイルを検索できることを示しています。
find
でも、find . -mmin 1 -exec sleep 120 \; -print