Linux
如何刪除具有特定日期模式的文件
在文件夾下
/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]*"