web-dev-qa-db-ja.com

最新の変更されたファイルでX日より古いファイルを削除します

変更日と最近変更されたファイルの比較に基づいてファイルを削除する解決策はありますか?最新のファイルに関しては、古いファイルを削除する必要があります。

たとえば、最終変更日が2017年9月10日の場合、10日古いファイルを削除する必要があることを意味します。変更日が変更された場合も同じです。削除するファイルはそれに応じて変更する必要があります。

GNUツールを使用:

find . -type f -printf '%T@:%p\0' |
  sort -rzn |
  awk -v RS='\0' -v ORS='\0' -F: -v d=10 '
    NR == 1 {t = $1 - 86400 * d}
    $1 < t, 0 {sub(/[^:]*:/, ""); print}' |
  xargs -r0 echo rm

(満足したらechoを削除します)。

findで各ファイルの123456.123:./path/to/file<NUL>を出力します(123456.123はファイルの最終変更時刻です)。

これを数値で並べ替えて(最新のファイルが最初に来るように)、次にawkを使用して、最新のファイル(並べ替えられたリストの最初のレコードにある)よりも10日以上古いファイルを見つけます。

2

Linuxベースのオペレーティングシステムで作業している場合は、以下のコマンドが役立つと思います。

find /path/to/directory/ -mindepth 1 -mtime +7 -delete

+7 =変数は、7日より古いファイルが削除されることを意味します

スペース、rmへの引用符には注意してください。

0
GURUVEER