Linux系統下find是最經常使用的指令,find命令在目錄結構中搜索文件,並執行指定的操做,掌握它的形式與用法對運維工做頗有用處。mysql
find經常使用參數sql
-exec:find命令對匹配的文件執行該參數所給出的shell命令。相應命令的形式爲'command' { } ;,注意{ }和\;之間的空格。 -name filename 查找名爲filename的文件 -mtime -n +n 按文件更改時間來查找文件,-n指n天之內,+n指n天之前 -atime -n +n 按文件訪問時間來查 -ctime -n +n 按文件建立時間來查找文件,-n指n天之內,+n指n天之前 -type b/d/c/p/l/f 查是塊設備、目錄、字符設備、管道、符號連接、普通文件 -size n[c] 查長度爲n塊[或n字節]的文件 -mindepth -maxdepth 選項容許您指定您但願 find 搜索深刻到目錄樹的哪一級別
案例分享
今天在編寫MySQL數據庫備份腳本時,就遇到一個難題,要清理14天前的備份文件。你們可能以爲這不是很簡單的事情嗎,用find找出,而後加xargs rm -rf就能夠自動刪除了。shell
可事情不是這麼簡單,下面我來給你們介紹一下需求,我就想找到/home/mysql/backup/physical目下,14天的目錄,並刪除。數據庫
[mysql@localhost physical]$ pwd /home/mysql/backup/physical [mysql@localhost physical]$ ls -l total 0 drwxr-x--- 3 mysql mysql 31 Mar 23 02:30 202003230230 drwxr-x--- 3 mysql mysql 31 Mar 23 02:33 202003230233
用普通的find參數,試試效果運維
[mysql@localhost physical]$ find /home/mysql/backup/physical -type d -mtime +14 /home/mysql/backup/physical /home/mysql/backup/physical/202003230230 /home/mysql/backup/physical/202003230230/base_202003230230 /home/mysql/backup/physical/202003230230/base_202003230230/mysql /home/mysql/backup/physical/202003230230/base_202003230230/sys /home/mysql/backup/physical/202003230230/base_202003230230/testdb /home/mysql/backup/physical/202003230230/base_202003230230/performance_schema /home/mysql/backup/physical/202003230233 /home/mysql/backup/physical/202003230233/base_202003230233 /home/mysql/backup/physical/202003230233/base_202003230233/mysql /home/mysql/backup/physical/202003230233/base_202003230233/sys /home/mysql/backup/physical/202003230233/base_202003230233/testdb /home/mysql/backup/physical/202003230233/base_202003230233/performance_schema
但是我知曉找到下面2個目錄,並不須要找到下級目錄,很明顯,find找的目錄多了。ide
[mysql@localhost physical]$ ll total 0 drwxr-x--- 3 mysql mysql 31 Mar 23 02:30 202003230230 drwxr-x--- 3 mysql mysql 31 Mar 23 02:33 202003230233
怎麼辦,我用man find看用法時,發現有2個參數-mindepth -maxdepth,能夠控制查詢的層級,對於解決這個需求,很是的有用,來試試效果code
[mysql@localhost physical]$ find /home/mysql/backup/physical -mindepth 1 -maxdepth 1 -type d -mtime +14 /home/mysql/backup/physical/202003230230 /home/mysql/backup/physical/202003230233
到這裏,已經很是完美的解決了個人需求,在加上xargs rm -rf就能夠了orm
[mysql@localhost physical]$ find /home/mysql/backup/physical -mindepth 1 -maxdepth 1 -type d -mtime +14| xargs rm -rfit
這個技能你學到了吧。form