web-dev-qa-db-ja.com

mtimeを使用して1日以上経過したファイルを見つけるにはどうすればよいですか?

1日以上経過したすべてのファイルを削除しようとしています。ファイルを削除するスクリプトを実行する前に、mtimeを使用してファイルを見つけようとしています。しかし、私は私のコマンドで同じ問題に直面しています-

私の現在の日付は

Wed Jan 27 11:49:20 BDT 2016

私のファイルリストは

Jan 25 15:11 25-01-2016.txt            
Jan 26 13:05 26-01-2016.txt    
Jan 27 02:30 27-01-2016.txt    
Jan 25 15:11 dfk-25-01-2016.txt    
Jan 26 13:05 dfk-26-01-2016.txt      
Jan 27 02:30 dfk-27-01-2016.txt 

-mtime +1は、1日以上前のすべてのファイルをリストすることになっていた。

find /etc/output/*.txt -mtime +1
find /etc/output/*.txt -mtime +0

/output/25-01-2016.txt
/output/dfk-25-01-2016.txt

find /etc/output/*.txt -mtime -1

/output/26-01-2016.txt
/output/27-01-2016.txt
/output/dfk-26-01-2016.txt
/output/dfk-27-01-2016.txt

私の望ましい出力は次のとおりです、

find /etc/output/*.txt -mtime +1

/output/25-01-2016.txt
/output/dfk-25-01-2016.txt

find /etc/output/*.txt -mtime +0

/output/26-01-2016.txt
/output/dfk-26-01-2016.txt
/output/25-01-2016.txt
/output/dfk-25-01-2016.txt

2
Nishat

2つのポイント:「小数部分を無視する」を見つけます。時間数を計算し、24で割り、結果を整数化します(端数は破棄します)。したがって、-mtime 0はファイルをチェックし、mtimesを比較し、時間に変換し、24で除算します。その結果の整数部分が0であれば、それは一致です。つまり、0.99999時間前が一致します。次に、-mtime +0は、mtimeの差が少なくとも24時間であるすべてのファイルと一致します。

次に、mtimeでn- 24時間ではなく暦日をカウントする場合は、-daystartを使用します。したがって、-daystart -mtime 0todayを意味し、-daystart -mtime +0は今日より前を意味します。

10
Otheus