私の開発ユニットで1週間を過ぎたファイルを見つけて削除する必要があります。このコンピュータで使用できるユーティリティの数は制限されています。-mtime
find
述語は使用できません。この場合、x日より古いすべてのファイルを確認する方法は?
答え1
-mtime
はい、標準述部find
(反対に反対)ですが、ビルド時に機能が無効になっている単純な-delete
バージョンがあるようです。busybox
FEATURE_FIND_MTIME
ビジーボックスを有効にして再構築できる場合は、次のことができるはずです。
find . -mtime +6 -type f -exec rm -f {} +
またはFEATURE_FIND_DELETE
有効な場合:
find . -mtime +6 -type f -delete
そうでない場合は、1週間前に変更時間に設定されたファイルに別のオプションを使用できますfind -newer
(有効になっていると仮定)。FEATURE_FIND_NEWER
touch -d "@$(($(date +%s) - 7 * 86400))" ../ref &&
find . ! -type f -newer ../ref -exec rm -f {} +
または-newer
使用できませんがsh
、サポートされている場合:[
-nt
touch -d "@$(($(date +%s) - 7 * 86400))" ../ref &&
find . ! -type f -exec sh -c '
for f do
[ "$f" -nt ../ref ] || printf "%s\0" "$f"
done' sh {} + |
xargs -0 rm -f
答え2
からman find
:
-a時間n
ファイルはn * 24時間前に最後にアクセスされました。 findが24時間前に最後にファイルにアクセスした期間を計算すると、すべての小数部分は無視されます。したがって、-atime +1 を一致させるには、ファイルに少なくとも 2 日前にアクセスする必要があります。
-c 時間 n
ファイルの状態がn * 24時間前に最後に変更されました。丸めがファイルの状態変更時間に与える影響については、-atimeの説明を参照してください。
削除したいファイルのユースケースに応じて、これは唯一の他のオプションですfind
。なぜmtime
使用できないのですか?どのファイルシステムを使用していますか?他のオプションを見ましたか?