命令を検索すると、パラメータ値が混乱します。

命令を検索すると、パラメータ値が混乱します。

~から探す手動:

mtime n
File's data was last modified n*24 hours ago.  

だから

find . -mtime 0

n * 24時間前、つまり0 * 24時間前、つまり0時間前に変更されたコンテンツを見つける必要があります。しかしそれは真実ではない。 24時間前と現在の瞬間の間に修正されたコンテンツを見つけると思います。

それから

find . -mtime 0

同じ

find . -mtime -1

私は正しいですか?指示にエラーがありますか?

私の考えは次のとおりです(編集済み)。

-mtime -1, file was modified less than 24 hours ago
-mtime -0, file was modified less than 24 hours ago
-mtime 1, file was modified **exactly** 24 hours ago

-mtime +1, file was modified more than 24 hours ago
-mtime +0, file was modified more than 24 hours ago.
-mtime 0, file was modified **exactly** 24 hours ago

find . -mtime 024時間前に変更していないファイルが引き続き表示されるため、まだ把握していないようです。

編集2:

まあ、私は何も理解していませんが、これは正しいチートシートだと思います。

find . -mtime +0 # find files modified greater than 24 hours ago
find . -mtime 0 # find files modified between now and 1 day ago
# (i.e., in the past 24 hours only)
find . -mtime -1 # find files modified less than 1 day ago (SAME AS -mtime 0)
find . -mtime 1 # find files modified between 24 and 48 hours ago
find . -mtime +1 # find files modified more than 48 hours ago

ベストアンサー1

これは実証的な調査によって理解するのが非常に簡単です。 5つの空のファイルを設定し、修正時間を次の値に設定しましょう。

$ touch -d '50 hours ago' a
$ touch -d '40 hours ago' b
$ touch -d '30 hours ago' c
$ touch -d '20 hours ago' d
$ touch -d '10 hours ago' e

findatime / mtime / ctimeテスト結果は、コマンドが実行された時間から24時間の期間を計算することによって計算されます。この計算では、小数部は無視されます。

したがって、この値を分けて、対応する24時間期間の数を調べてみましょう。

a: 50/24 = 2
b: 40/24 = 1
c: 30/24 = 1
d: 20/24 = 0
e: 10/24 = 0

次に、パラメータを指定する方法を見てみましょう。 n(完全一致)、+ n(より大きい)、-n(より小さい)の3つの形式が許可されますfind

次に、findこのファイルに対していくつかのコマンドを実行し、結果を見てみましょう。

  • find . -mtime 0ファイルdとe(値0)を返します。
  • find . -mtime 1ファイルbとc(値1)を返します。

正確な一致(n)を指定しても、変更時間範囲がまだ表示されます。これは、計算で小数部が無視されるためです。

次のコマンドセットに進みます。

  • find . -mtime +0ファイルa、b、c(値1と2)を返します。
  • find . -mtime +1ファイルa(値2)のみが返されます。

findこれらの計算では、小数部が無視されるため、ゼロに続く値は1のみになります。 +1にも同じことが当てはまります。次の一致は2のみ可能です。これはやや直感的ではないため、マニュアルにも「-atime +1と一致するには少なくとも2日前にファイルにアクセスする必要があります」という重要なポイントとして記載されています。

最後に、「遅い」範囲を見てみましょう。

  • find . -mtime -0ファイルは返されません。
  • find . -mtime -1ファイル d と e を返します。

この-0チェックは将来の修正タイムスタンプとファイルを一致させます。これは一般的なシナリオではないため、この実験には含まれていません。チェックは、-1ゼロ値(つまり1の後に小さい値)を持つファイルを返します。これらはdとeです。

これにより、これらのテストの混乱が解消されることを願っています。結論は、コマンドラインに単一の整数を指定しても、まだatime / ctime / mtimeテスト範囲を参照していることです。

おすすめ記事