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


1 命令格式:

$ find <指定目錄> <指定條件> <指定動作>
 

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

 

$find . -iname sqlquery.java
 

 

1.1 <指定目錄>:

 

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

 

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

 

1.2 <指定條件>: 

所要搜索的文件的特征。

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

 

$find / -user fred 		//查找在系統中屬於FRED這個用戶的文件
 
-group   按照文件所屬的組來查找文件  

 

 

$find / -group cat 		//查找在系統中屬於group組名cat的文件 
 
[3]根據uid 和 gid來查找用戶
-uid

 

#find  /tmp -uid 500       //查找uid是500 的文件
 
-gid

 

#find  /tmp -gid 1000      // 查找gid是1000的文件
 
[4]-a,-o,-not的使用
-a      連接兩個不同的條件(兩個條件必須同時滿足)

 

 

#find /tmp -name "*.sh" -a -user root
 
-o     連接兩個不同的條件(兩個條件滿足其一即可)
#find /tmp -name "*.sh" -o -user root
 
-not 對條件取反的
#find /tmp -not -user root
 
[5]根據文件時間戳的相關屬性來查找文件
-atime   最近一次訪問時間      單位:天
-mtime 最近一次內容修改時間  單位:天
-ctime  最近一次屬性修改時間  單位:天
-amin  最近一次訪問時間      單位:分鍾
-mmin  最近一次內容修改時間  單位:分鍾
-cmin  最近一次屬性修改時間  單位:分鍾
-newer file1 ! file2 查找更改時間比文件file1新但比文件file2舊的文件 
  1.  
    # find /tmp -atime + 5 //表示查找在五天內沒有訪問過的文件
  2.  
    # find /tmp -atime - 5 //表示查找在五天內訪問過的文件
[6]根據文件類型來查找文件
-type 查找某一類型的文件 
文件類型: 
f 普通文件 
d 目錄 
l 符號鏈接文件 
c 字符設備文件 
p 管道文件 
b 塊設備文件
s socket文件

#find /tmp -type s
 
[7]根據大小來查找文件
-size n[c] 查找文件長度為n塊的文件,帶有c時表示文件長度以字節計 
  1.  
    # find /tmp -size 2M //查找在/tmp 目錄下等於2M的文件
  2.  
    # find /tmp -size +2M //查找在/tmp 目錄下大於2M的文件
  3.  
    # find /tmp -size -2M //查找在/tmp 目錄下小於2M的文件

 

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

 

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

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

 

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

 

$find / -nouser 	       //查找在系統中屬於作廢用戶的文件 
 

 

1.3 <指定動作>: 

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

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

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

 

#find /tmp -atime +30 –exec rm –rf {} \; //刪除查找到的超過30天沒有訪問過文件
 
這里要注意{ }的使用:替代查找到的文件
#find /tmp -name "*.old" | xargs chmod 700
 

 

2 命令舉例

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

$find /etc -name '*del*'
 

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

$find . -name "config.py" -ls
 
搜索當前目錄中,所有過去10分鍾中更新過的普通文件。如果不加-type f參數,則搜索普通文件+特殊文件+目錄。
$ find . -type f -mmin -10
 
jpg 改 rar 


免責聲明!

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



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