検索コマンドが誤ったデータを返す

検索コマンドが誤ったデータを返す

このコマンドを使用して、最後の日に変更された(または生成された)すべてのファイルを一覧表示します。

find ./ -mtime 1 -ls

さて、先ほど命令を実行したところ(5月2日19時38分)、4月30日からファイルが引き続き返されます。

なぜこれが起こるのかを教えたり、過去24時間に変更または生成されたファイルを見つけるためのより良いコマンドを与えることができる人はいますか?

答え1

find数日前に変更されたファイルの場合は、小数部は無視されるため、代わりに-mmin使用することをお勧めします。-mtimeしたがって、23時間の1日も1日と見なされます。

からman find

-atime n
         File was last accessed n*24 hours ago.  When find figures 
out how many 24-hour periods ago the file was  last  accessed, 
any fractional part is ignored, so to match -atime +1, a file has 
to have been accessed at least two days ago.

あなたの場合、以下は過去24時間(例:1440分)で変更されたファイルを示しています。

find . -mmin -1440 -ls 

答え2

-mtime Nファイルの年齢を示します。一日で満足してください。窒素<窒素+1。つまり、最後に変更されたファイルを選択します。-mtime N窒素そして窒素+1日前。たとえば、-mtime 11〜2日前に変更されたファイルを選択します。最後の日(たとえば、過去24時間以内)に変更されたファイルを選択するには、を使用します-mtime 0

-mtime -Nファイルの年齢を示します。解く<窒素つまり、変更されたファイルは次より少なくなります。窒素数日前。それほど直感的ではなく、ファイルの年齢を意味します。-mtime +N解く窒素+1≤つまり、少なくとも変更されたファイル窒素+1日前。

これらの規則を覚えにくい場合は、代わりに参照文書を使用してください。

touch -d '1 day ago' cutoff
find . -newer cutoff

(「1日前」構文にはGNUが必要ですtouch。)

関連情報