曾經在某公司面試的時候被問到了類似的問題。
假設在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目錄下產生于五日之前的文件
//但是每次刪除文件之前都會詢問是否執行刪除,提示如下
<rm ... logs/20190201.log>?
輸入y,則執行刪除,輸入n或不輸入則跳過該文件
擴展
-type f
表示選擇普通文件
-mtime +5
表示選擇五天之前的文件
-mtime -5
表示選擇五天之內的文件