Linux
查找+刪除日期格式的文件
我們有以下日誌
/var/log/sync/manager.log.2018-06-14-00 /var/log/sync/manager.log.2020-01-14-07 /var/log/sync/manager.log.2020-01-14-02 /var/log/sync/manager.log.2020-01-14-03 /var/log/sync/manager.log.2020-01-14-04 /var/log/sync/manager.log.2020-01-14-34 /var/log/sync/manager.log.2020-01-10-06 /var/log/sync/manager.log.2020-01-14-04 /var/log/sync/manager.log.2019-04-14-05 /var/log/sync/manager.log.2020-01-14-06 /var/log/sync/manager.log.2020-01-14-76 /var/log/sync/manager.log.2020-01-14-982
我們要刪除日期格式的日誌,例如 -
2020-01-14-06
我創建了以下
find var/log/sync/ -type f -mmin +60 -regex '.*\.log.*[0-9]$' -delete
但它在“.log”之後刪除了每個結束的數字。
d='[0123456789]' LC_ALL=C find /var/log/sync -name "*.log.$d$d$d$d-$d$d-$d$d-$d$d" \ -type f -mmin +59 -delete
(注意
-mmin
和-delete
是非標準擴展)。使用 GNU
find
,要刪除超過 60 分鐘的文件,它是-mmin +59
(或\( -mmin 60 -o -mmin +60 \)
)。
我認為你的正則表達式不行。你有
.*\
日誌之後,這意味著日誌之後的一切都很好,最後是一個數字。它應該是:find var/log/sync/ -type f -mmin +60 -regextype sed -regex '.*\.log\.[0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}-[0-9]\{2,3\}$' -delete
-regextype sed
至少在我的電腦上需要啟用量化器,例如\{2\}
.