次の違いは何ですか -
find . -daystart -mtime +5
そして
find . -mtime +5
テストしてみると同じ結果が出ました。
それを使用するとどのような利点がありますか-daystart
?この分野初心者なのに親切なアドバイスをお願いします。
答え1
基準点が現在時刻(find
ランタイム)ではなく真夜中になるようにファイルの寿命を比較する方法を変更します。
たとえば、今は2022年7月8日午前11時12分頃です。次のファイルを検討してください。
$ touch -d '2022-07-08 09:00' this_morning # 2 h old
$ touch -d '2022-07-07 23:55' yesterday_before_midnight # 11 h old
$ touch -d '2022-07-07 09:00' yesterday_morning # 1 d + 2 h old
-mtime 0
一日中文書を作成しません。デフォルトでは、現在の時刻と比較して過去24時間の期間が提供されます。
$ find . -type f -mtime 0
./yesterday_before_midnight
./this_morning
これは-daystart
カレンダーの日付を見るのと似ています。-daystart -mtime 0
「0日前」ファイルが与えられると、つまり今日から始まります。
$ find . -type f -daystart -mtime 0
./this_morning
同様に、少なくとも「1日」(つまり24時間以上)を過ぎたファイルの場合:
$ find . -mtime +0
./yesterday_morning
そして昨日またはそれ以前:
$ find . -daystart -mtime +0
./yesterday_before_midnight
./yesterday_morning
これを確認するもう1つの方法は、-daystart
ファイルタイムスタンプと現在時刻の間の深夜数を計算することです。
()修飾子は「厳密に大きい」(「より小さい」)を意味し、/の規則は、findがファイルの寿命の24時間期間数を計算し、すべての小数部を削除することです。したがって、最終的な意味は「少なくとも0」ではなく、「少なくとも1」です。+N
-N
-atime
-mtime
+0
POSIX の説明は-mtime
次のとおりです。
-m時間 N
ファイル変更時間を初期化時間から減算して86400で割った場合(残りはすべて破棄)、デフォルトの用語はtrueと評価する必要があります。N。
したがって、デフォルトのタイムライン(除外-daystart
)は次のようになります。
...-|-- age 2 days --|-- age 1 day ---|-- age 0 days --|
^ ^ ^ ^
72 h ago 48 h ago 24 h ago current time
これにより、-daystart
基準点は真夜中に移動します。
...-|-- age 2 days --|-- age 1 day ---|-- age 0 days --|
^ ^ ^ ^
start of start of last midnight / next midnight /
the day before yesterday start of today end of today
(将来、ファイルの負の時間を取得できますが、マイナス記号は異なる意味を持つため、直接指定することはできません。しかし、それを使用することができ、後で修正されたファイルを提供するか、-mtime -0
明日-daystart -mtime -0
または後で修正されたファイルを提供してください。)
偶然にも/と一緒に作業すると、-daystart
1日の終わりから計算が始まります。-amin
-mmin
$ touch -d '12:00' today_1200.txt # noon today
$ touch -d '23:00' today_2300.txt # late evening today
$ find . -type f -daystart -mmin +120
./today_1200.txt
$ find . -type f -daystart -mmin -120
./today_2300.txt
$ find . -type f -daystart -mmin -$((13*60))
./today_2300.txt
./today_1200.txt
(23:00は1日終了から120分以内、12:00は1日終了から120分以上です。どちらも1日終了から13*60分以内です。)
これマニュアルページもちろん-daystart
:
時間は24時間前ではなく、今日から測定されます。
これはやや奇妙な表現のように聞こえます。彼らは終日の期間を提示しますが、表現を見るとゼロ基準点を表すように聞こえます。デフォルトでは、この時間は現在の時間になり、上記の-daystart
ように今日の終わりに移動します。だから私の考えでは、「現在の時間ではなく、今日の終わりから時間を測定する」という表現がより明確です。