web-dev-qa-db-ja.com

今日作成されていないすべてのファイルを削除する方法

したい delete all今日作成されていないフォルダ内のファイル。今日作成されたファイルのリストを使用して取得する方法を知っています

find . -type f -mtime -1

しかし、今日作成されていないすべてのファイルのリストを取得する方法がわかりません。基本的に、今日を除いて古いタイムスタンプのファイルがフォルダにあるかどうかを確認する必要があります。存在する場合は、古いファイルのみを削除する必要があります。

1
NJMR
find . -type f -mtime +0 -exec rm -f {} +

または

find . -type f ! -mtime -1 -exec rm -f {} +

コンテンツが24時間以上前に最後に変更された通常のファイルを削除します(-mtime +0の意味:その年齢日数(整数に切り捨て、日数は24時間、または86400 Unixエポックの2番目の期間)は厳密に0)より大きくなります。

一部のfind実装には-delete述語があります。これを-exec rm -f {} +の代わりに使用すると、より安全で効率的になります。

GNU findで、今日00:00:00より前に最後に変更されたファイルの場合、-daystart述語を追加できます。これにはファイルが含まれます24時間以内であっても、昨日最後に変更されました。

いくつかのfind実装では、次のこともできます。

find . ! -newermt 00:00:00 -delete

今日の00:00:00より前(または正確に)に最後に変更されたファイルを削除します。

6

findには、パラメータ-notまたは!があり、ファイルを削除するために-deleteの後に続くパラメータを無効にします。

find . ! -mtime -1 -type f -delete

-notはPOSIXに準拠していないことに注意してください

0
Jakub Lucký