変更日と最近変更されたファイルの比較に基づいてファイルを削除する解決策はありますか?最新のファイルに関しては、古いファイルを削除する必要があります。
たとえば、最終変更日が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日以上古いファイルを見つけます。
Linuxベースのオペレーティングシステムで作業している場合は、以下のコマンドが役立つと思います。
find /path/to/directory/ -mindepth 1 -mtime +7 -delete
+7 =変数は、7日より古いファイルが削除されることを意味します
スペース、rmへの引用符には注意してください。