find是用于查找linux中的文件或目錄,它的查找方式是實(shí)時(shí)遍歷整個(gè)查找范圍,默認(rèn)是把查找到的內(nèi)容顯示到屏幕,也可以組合其他命令對(duì)查找內(nèi)容進(jìn)行操作篡腌。
find的常用語(yǔ)法:find 查找目錄 查找條件 ,如查找 /var 目錄下所有文件名包含 mysql 的文件:find /var -name "*mysql*"
find的常用參數(shù):
參數(shù) | 含義 | 舉例 | 說(shuō)明 | 備注 |
---|---|---|---|---|
-name | 按文件名查找,區(qū)分大小寫(xiě) | find /var/log -name "*.log" | 查找/var/log目錄下所有以.log結(jié)尾的文件 | |
-iname | 按文件名查找勾效,不區(qū)分大小寫(xiě) | find /var/log -iname "*.log" | 查找/var/log目錄下所有以.log結(jié)尾的文件 | |
-type | 按文件類型查找 | find /var/log -type d -name "mysql*" | 查找/var/log目錄下以mysql開(kāi)頭的目錄 | b-塊設(shè)備文件嘹悼,d-目錄叛甫,c-字符設(shè)備文件,p-管道文件杨伙,l-符號(hào)鏈接文件合溺,f-普通文件 |
-atime | 按文件訪問(wèn)時(shí)間查找,以天為單位 | find . -atime +3 | 查找當(dāng)前目錄訪問(wèn)時(shí)間在3天之前的文件或目錄 | +缀台,多少天之前;-哮奇,多少天之內(nèi) |
-ctime | 按文件修改時(shí)間查找膛腐,以天為單位 | find . -ctime -3 | 查找當(dāng)前目錄修改時(shí)間在3天之內(nèi)的文件或目錄 | +,多少天之前鼎俘;-哲身,多少天之內(nèi) |
-mtime | 按文件內(nèi)容修改時(shí)間查找,以天為單位 | find . -mtime +3 | 查找當(dāng)前目錄內(nèi)容被修改時(shí)間在3天之內(nèi)的文件或目錄 | +贸伐,多少天之前勘天;-,多少天之內(nèi) |
-amin | 按文件訪問(wèn)時(shí)間查找捉邢,以分鐘為單位 | find . -amin -3 | 查找當(dāng)前目錄訪問(wèn)時(shí)間在3分鐘之內(nèi)的文件或目錄 | |
-cmin | 按文件修改時(shí)間查找脯丝,以分鐘為單位 | find . -cmin -3 | 查找當(dāng)前目錄修改時(shí)間在3分鐘之內(nèi)的文件或目錄 | |
-mmin | 按文件內(nèi)容修改時(shí)間查找,以分鐘為單位 | find . -mmin -3 | 查找當(dāng)前目錄內(nèi)容被修改時(shí)間在3分鐘之內(nèi)的文件或目錄 | |
-size | 按文件容量大小查找 | find /etc -size +3M | 查找/etc下文件大小大于3M的文件 | 查找單位有:b伏伐,k宠进,M,G等藐翎;“+”表示大于材蹬,“-”表示小于 |
-user | 按文件屬主查找 | find /etc -user root | 查找/etc下屬主為root的文件或目錄 | find /etc -not -user root,查找/etc下非屬主為root用戶的文件吝镣,-not也可以寫(xiě)成堤器!,如:find /etc ! -user root |
-group | 按文件屬組查找 | find /etc -group root | 查找/etc下屬組為root的文件或目錄 | 同-user用法 |
-perm | 按文件權(quán)限查找 | find / -type f -perm /6000 | 查找當(dāng)前系統(tǒng)含有suid和sgid權(quán)限的文件末贾,這 | mode:文件權(quán)限正好符合mode闸溃;-perm +mode:文件許可部分符合mode,有一位符合就行未舟;-perm -mode: 文件許可完全符合mode圈暗,完全包括 |
-empty | 查找空文件 | find / -type f -empty | 查找當(dāng)前系統(tǒng)中的空文件 |
PS:以上參數(shù)都可以組合使用,功能強(qiáng)大T0颉员串!
find之后的操作
有時(shí)候,我們并不僅僅是查找昼扛,而是對(duì)查找后的文件進(jìn)行進(jìn)一步的操作寸齐,所以介紹幾個(gè)常用組合命令欲诺。
命令 | 含義 | 舉例 | 說(shuō)明 | 備注 |
---|---|---|---|---|
-ls | 顯示文件詳細(xì)信息,如屬主屬組等 | find /var -user mysql -ls | 查找/var下用戶為mysql的文件渺鹦,并顯示詳細(xì)信息 | |
-exec | 執(zhí)行命令 | find . -type f -mtime +14 -exec rm {} \; | 查找當(dāng)前目錄下修改時(shí)間在14天之前的文件扰法,并刪除這些文件 | "{} \;"是固定語(yǔ)法,{}與\;之間有空格毅厚,-exec COMMAND {} \; |
-ok | 執(zhí)行命令塞颁,需要確認(rèn) | find . -type f -mtime +14 -ok rm {} \; | 查找當(dāng)前目錄下修改時(shí)間在14天之前的文件,并刪除這些文件 | 每個(gè)文件刪除前吸耿,會(huì)提示需要確認(rèn) |
xargs | 通過(guò)管道命令執(zhí)行 | find . -type f -name "*.log" | xargs rm -rf | 查找當(dāng)前目錄下后綴是.log的文件祠锣,并刪除它們 |
*以下做幾點(diǎn)備注說(shuō)明
-exec 參數(shù)后面跟的是command命令,它的終止是以;為結(jié)束標(biāo)志的咽安,所以這句命令后面的分號(hào)是不可缺少的伴网,考慮到各個(gè)系統(tǒng)中分號(hào)會(huì)有不同的意義,所以前面加反斜杠妆棒。使用find時(shí)澡腾,大多數(shù)用戶使用這一選項(xiàng)是為了查找舊文件并刪除它們。建議在真正執(zhí)行rm命令刪除文件之前糕珊,最好先用ls命令看一下动分,確認(rèn)它們是所要?jiǎng)h除的文件『煅。或者刺啦,使用find的-print選項(xiàng)看看輸出的路徑及文件名。 -exec選項(xiàng)后面跟隨著所要執(zhí)行的命令或腳本纠脾,然后是{}玛瘸,一個(gè)空格和一個(gè)\,最后是一個(gè)分號(hào)苟蹈。
{} 花括號(hào)代表前面find查找出來(lái)的文件名糊渊。
在使用find命令的-exec選項(xiàng)處理匹配到的文件時(shí), find命令將所有匹配到的文件一起傳遞給exec執(zhí)行慧脱。但有些系統(tǒng)對(duì)能夠傳遞給exec的命令長(zhǎng)度有限制渺绒,這樣在find命令運(yùn)行幾分鐘之后,就會(huì)出現(xiàn)溢出錯(cuò)誤菱鸥。錯(cuò)誤信息通常是“參數(shù)列太長(zhǎng)”或“參數(shù)列溢出”宗兼。而xargs命令每次只獲取一部分文件而不是全部,這樣它可以先處理最先獲取的一部分文件氮采,然后是下一批殷绍,并如此繼續(xù)下去。