Linux

如何刪除具有特定日期模式的文件

  • September 13, 2018

在文件夾下/var/log/roler_t,我們有以下文件:

-rw-r--r-- 1 roler smike    37652 Jun 25 01:44 2018-06-23T02:KJU:00
-rw-r--r-- 1 roler smike    41742 Jun 25 01:45 2018-06-21T20:KJU:00
-rw-r--r-- 1 roler smike    36762 Jun 25 01:46 2018-06-22T08:KJU:00
-rw-r--r-- 1 roler smike    51764 Jun 25 01:47 PL-06-23T12:KJU:00
-rw-r--r-- 1 roler smike    42751 Jun 25 01:48 2018-06-21T16:KJU:00
-rw-r--r-- 1 roler smike    34627 Jun 25 01:49 2018-06-22T23:KJU:00
-rw-r--r-- 1 roler smike    59828 Jun 25 01:51 2018-06-23T05:KJU:00
-rw-r--r-- 1 roler smike    33561 Jun 25 01:52 2018-06-22T20:KJU:00
-rw-r--r-- 1 roler smike    59828 Jun 25 01:51 JFG:KJU:00
-rw-r--r-- 1 roler smike    33561 Jun 25 01:52 PL-22T20:KJU:00
-rw-r--r-- 1 roler smike    36643 Jun 25 01:53 2018-06-22T01:KJU:00

我們怎樣才能只刪除十天以前且具有特定日期模式的文件,例如2018-06-23.

預期結果如下:

以下文件將保留在/var/log/roler_t

-rw-r--r-- 1 roler smike    51764 Jun 25 01:47 PL-06-23T12:KJU:00
-rw-r--r-- 1 roler smike    59828 Jun 25 01:51 JFG:KJU:00
-rw-r--r-- 1 roler smike    33561 Jun 25 01:52 PL-22T20:KJU:00

您可以使用該find命令按日期過濾文件。

例如:

find /var/log/roler_t -mtime +10

返回修改日期> 10 天的所有文件。

同樣,您可以使用-atime(訪問時間)、-ctime(狀態更改時間)之類的標誌,但我認為-mtime這就是您要尋找的。

如果您想使用單個命令刪除它們(但我建議您始終檢查結果find是否符合您的預期):

find /var/log/roler_t -mtime +10 -exec rm {} \;

這與您之前的問題類似,您可以通過以下方式實現

$ find /var/log/roler_t -mtime +10 -name "XXXX-XX-XX*"

其中 XXXX-XX-XX 是您要查找的日期戳。如果您知道年月日對應於您要查找的修改時間,則可以將 -name 選項的參數更改為如下所示:

$find /var/log/roler_t -mtime +10 -name "`date -d'now - 10 days' +'%y-%m-%d'*"

自動生成文件名前綴,儘管您可能需要使用您減去的日期命令天數來起訴 mtime 和 datestamp 匹配您需要的內容。

如果您只想匹配以類似字元串的日期戳開頭的文件的名稱,例如“2018-09-13”,請使用以下命令:

/var/log/roler_t -mtime +10 -name "[12][0-9][0-9][0-9]-[01][0-9]-[0-3][0-9]*"

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