linux-find【遞歸搜索文件名】


1 命令格式:

[plain]  view plain  copy
 
  1. $ find <指定目錄> <指定條件> <指定動作>  

最常見示例:查找文件名(忽略大小寫)

 

[java]  view plain  copy
 
  1. $find . -iname sqlquery.java  

 

1.1 <指定目錄>:

 

 所要搜索的目錄及其所有子目錄。默認為當前目錄。find默認遞歸指定目錄。目錄可以有多個,目錄之間要用空格分開。

 

[plain]  view plain  copy
 
  1. [admin@r42h06016.xy2.xxx.com]$find /etc /tmp /root -name passwd  

 

1.2 <指定條件>: 

所要搜索的文件的特征。

[1]根據文件名查找
-name    按照文件名查找 
-iname   根據文件名查找,但是不區分大小寫
-prune    不在當前指定的目錄中查找 
-depth    在查找文件時,首先查找當前目錄中的文件,然后再在其子目錄中查找 
[2]根據文件所屬用戶和組來查找文件
-user     按照文件屬主來查找文件 

 

[plain]  view plain  copy
 
  1. $find / -user fred      //查找在系統中屬於FRED這個用戶的文件  

-group   按照文件所屬的組來查找文件  

 

 

[plain]  view plain  copy
 
  1. $find / -group cat      //查找在系統中屬於group組名cat的文件   

[3]根據uid 和 gid來查找用戶
-uid

 

[plain]  view plain  copy
 
  1. #find  /tmp -uid 500       //查找uid是500 的文件  

-gid

 

[plain]  view plain  copy
 
  1. #find  /tmp -gid 1000      // 查找gid是1000的文件  

[4]-a,-o,-not的使用
-a      連接兩個不同的條件(兩個條件必須同時滿足)

 

 

[plain]  view plain  copy
 
  1. #find /tmp -name "*.sh" -a -user root  

-o     連接兩個不同的條件(兩個條件滿足其一即可)

[plain]  view plain  copy
 
  1. #find /tmp -name "*.sh" -o -user root  

-not 對條件取反的

[plain]  view plain  copy
 
  1. #find /tmp -not -user root  

[5]根據文件時間戳的相關屬性來查找文件
-atime   最近一次訪問時間      單位:天
-mtime 最近一次內容修改時間  單位:天
-ctime  最近一次屬性修改時間  單位:天
-amin   最近一次訪問時間      單位:分鍾
-mmin  最近一次內容修改時間  單位:分鍾
-cmin   最近一次屬性修改時間  單位:分鍾
-newer file1 ! file2 查找更改時間比文件file1新但比文件file2舊的文件 

[plain]  view plain  copy
 
  1. #find /tmp -atime +5  //表示查找在五天內沒有訪問過的文件  
  2. #find /tmp -atime -5   //表示查找在五天內訪問過的文件  

[6]根據文件類型來查找文件
-type 查找某一類型的文件 
文件類型: 
f 普通文件 
d 目錄 
l 符號鏈接文件 
c 字符設備文件 
p 管道文件 
b 塊設備文件
s socket文件

[plain]  view plain  copy
 
  1. #find /tmp -type s  

[7]根據大小來查找文件
-size n[c] 查找文件長度為n塊的文件,帶有c時表示文件長度以字節計 

[plain]  view plain  copy
 
  1. #find /tmp -size  2M           //查找在/tmp 目錄下等於2M的文件  
  2. #find /tmp -size +2M           //查找在/tmp 目錄下大於2M的文件  
  3. #find /tmp -size -2M           //查找在/tmp 目錄下小於2M的文件  

 

[plain]  view plain  copy
 
  1. $find . -size +1000000c        //在當前目錄下查找文件長度大於1 M字節的文件  
[plain]  view plain  copy
 
  1. $find / -empty             //查找在系統中為空的文件或者文件夾   

 

[8]根據文件權限查找文件

-perm

[plain]  view plain  copy
 
  1. #find /tmp -perm 755           //查找在/tmp目錄下權限是755的文件  
  2. #find /tmp -perm +222          //表示只要有一類用戶(屬主,屬組,其他)的匹配寫權限就行  
  3. #find /tmp -perm -222          //表示必須所有類別用戶都滿足有寫權限  

[10]-nouser和-nogroup
-nogroup 查找無有效所屬組的文件,即該文件所屬的組不存在 
-nouser  查找無有效屬主的文件 

 

[plain]  view plain  copy
 
  1. #find / -nogroup -a -nouser    //在整個系統中查找既沒有屬主又沒有屬組的文件(這樣的文件通常是很危險的,作為系統工程師的我們應該及時清除掉)  

 

[plain]  view plain  copy
 
  1. $find / -nouser            //查找在系統中屬於作廢用戶的文件   

 

1.3 <指定動作>: 

對搜索結果進行特定的處理。

-print            //默認情況下的動作
-ls               //查找到后用ls 顯示出來
-ok [commend]     //查找后執行命令的時候詢問用戶是否要執行
-exec [commend]   //查找后執行命令的時候不詢問用戶,直接執行

注意-ok和-exec命令將命令行上后續的參數作為他們參數的一部分,直到被\;序列終止。魔術字符串{}是-ok和-exec命令的一個特殊類型的參數,它將被當前文件的完整路徑取代。

 

[plain]  view plain  copy
 
  1. #find /tmp -atime +30 –exec rm –rf {} \; //刪除查找到的超過30天沒有訪問過文件  

這里要注意{ }的使用:替代查找到的文件

[plain]  view plain  copy
 
  1. #find /tmp -name "*.old" | xargs chmod 700  

 

2 命令舉例

搜索/etc目錄下的文件名包含del的文件。

[plain]  view plain  copy
 
  1. $find /etc -name '*del*'  

系統查找到"config.py"文件后即時在屏幕上顯示"config.py"文件信息。 

[plain]  view plain  copy
 
  1. $find . -name "config.py" -ls  

搜索當前目錄中,所有過去10分鍾中更新過的普通文件。如果不加-type f參數,則搜索普通文件+特殊文件+目錄。

[plain]  view plain  copy
 
    1. $ find . -type f -mmin -10  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM