簡單shell 刪除五日之前的日誌檔案

2021-09-10 14:50:30 字數 1165 閱讀 2352

曾經在某公司面試的時候被問到了類似的問題。

假設在logs資料夾存放了許多日誌檔案

比如:20190204.log、20190205.log、20190206.log。。。

我們要刪除特定日期之前的日誌

在這裡展示的是使用shell指令中的find指令完成操作

首先看一下find指令的命令格式:

find pathname -options [-print -exec -ok]

其中:pathnamefind命令查詢的目錄路徑,/表示根目錄,如果不寫,則預設問當前路徑;

-printfind命令將匹配的檔案輸出到標準輸出;

-execfind命令對匹配的檔案執行該引數所給出的shell命令。命令的形式為:command {} \;

-ok-exec的作用相同,但是更安全,在執行每乙個命令之前,都會給出提示,讓使用者確認是否執行。

命令示例:

find logs -type f -mtime +

5-exec ls -l \;

//檢視logs目錄下產生於五日之前的檔案

find logs -type f -mtime +

5-exec rm \;

//刪除logs目錄下產生於五日之前的檔案

//該命令回直接執行刪除,可能存在誤刪

find logs -type f -mtime +

5-ok rm \;

//該命令也是刪除logs目錄下產生於五日之前的檔案

//但是每次刪除檔案之前都會詢問是否執行刪除,提示如下

.. logs/

20190201.log>

?輸入y,則執行刪除,輸入n或不輸入則跳過該檔案

擴充套件

-type f表示選擇普通檔案

-mtime +5表示選擇五天之前的檔案

-mtime -5表示選擇五天之內的檔案

php獲取之前五天的工作日

使用日期時,會有特定需求,如果想選取五個工作日,需要判斷每天是不是工作日,等一下解釋 selectdate array checkdate array forshowdate array showdate array checkdate 7 date y m d strtotime 0 day ch...

shell指令碼中的YYYY MM DD格式日期

我嘗試在我的bash shell指令碼中使用 date 但我希望日期為yyyy mm dd格式。我怎麼得到這個?你可以這樣做 date y m d 在bash 4.2 中,最好使用printf的內建日期格式化程式 bash的一部分 而不是外部date 通常是gnu日期 因此 put current ...

2023年2月20日寫給之前的自己

今天是2020.2.20感覺是乙個格式很整齊的日子,哈哈。由於新型冠狀病毒已經27天沒出過小區,在家玩了20天實在覺得有必要幹些有意義的事情,其實也是幹了一些有意義的事 比如 每天早上彈4個小時的結他,終於圓了10年前的夢想我現在可以說我會彈結他了,還是蠻爽的,還有就是由於我乙個人在家20天,我會做...