Linux系統強大的查找命令find用法

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

相關文章
相關標籤/搜索