Linux

在帶有精簡busybox的系統上查找超過x天的文件

  • August 21, 2018

我需要在開發單元中查找並刪除超過 1 週的文件。本機上可用的實用程序數量有限。-mtime find的謂詞不可用。在這種情況下,如何檢查所有早於 x 天的文件?

-mtimefind(與 相反-delete)的標準謂詞,但看起來您有一個精簡版本的busybox,其中該FEATURE_FIND_MTIME功能已在建構時被禁用。

如果您可以在啟用它的情況下重建busybox,您應該能夠:

find . -mtime +6 -type f -exec rm -f {} +

或者如果FEATURE_FIND_DELETE也啟用:

find . -mtime +6 -type f -delete

如果沒有,其他選項可能是在設置為具有一周前修改時間的文件上使用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

引用自:https://unix.stackexchange.com/questions/463813