曾經在某公司面試的時候被問到了類似的問題。
假設在logs
資料夾存放了許多日誌檔案
比如:20190204.log、20190205.log、20190206.log。。。
我們要刪除特定日期之前的日誌
在這裡展示的是使用shell指令中的find
指令完成操作
首先看一下find
指令的命令格式:
find pathname -options [-print -exec -ok]
其中:pathname
find命令查詢的目錄路徑,/
表示根目錄,如果不寫,則預設問當前路徑;
-print
find命令將匹配的檔案輸出到標準輸出;
-exec
find命令對匹配的檔案執行該引數所給出的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天,我會做...