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舊的文件
-
# find /tmp -atime + 5 //表示查找在五天內沒有訪問過的文件
-
# find /tmp -atime - 5 //表示查找在五天內訪問過的文件
-type 查找某一類型的文件
文件類型:
f 普通文件
d 目錄
l 符號鏈接文件
c 字符設備文件
p 管道文件
b 塊設備文件
s socket文件
#find /tmp -type s
[7]根據大小來查找文件-size n[c] 查找文件長度為n塊的文件,帶有c時表示文件長度以字節計
-
# find /tmp -size 2M //查找在/tmp 目錄下等於2M的文件
-
# find /tmp -size +2M //查找在/tmp 目錄下大於2M的文件
-
# find /tmp -size -2M //查找在/tmp 目錄下小於2M的文件
$find . -size +1000000c //在當前目錄下查找文件長度大於1 M字節的文件
$find / -empty //查找在系統中為空的文件或者文件夾
[8]根據文件權限查找文件
-perm-
# find /tmp -perm 755 //查找在/tmp目錄下權限是755的文件
-
# find /tmp -perm + 222 //表示只要有一類用戶(屬主,屬組,其他)的匹配寫權限就行
-
# find /tmp -perm - 222 //表示必須所有類別用戶都滿足有寫權限
-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