相對於locate,find的優點在於實時查找,精確,支持許多查找標準,單其查找時需要遍歷所有文件,速度較慢
基本用法
find [查找路徑] 匹配標準 處理動作
查找路徑:可省略,默認爲當前目錄
查找標準,默認爲顯示查找路徑下的所有文件
處理動作,默認爲打印
匹配標準
-name 'FILENAME' 對文件名精確查找,可使用通配符
? 代表一個字符
* 代表任意字符
[] 包含
...
-iname 'FILENAME' 對文件名查找並且不區分大小寫
-user USERNAME 根據屬主查找
-group GROUPNAME 根據數組查找
-uid UID 根據UID查找
-gid GID 根據GID查找
-nouser 查找沒有屬主的文件
-nogroup 查找沒有屬組的文件
-type [fdcblps]匹配文件類型
f:普通文件
d:目錄
c:字符設備
b:塊設備
l:連接文件
p:管道
s:套接字
-size [+-][MGk] 按大小查找,默認單位爲字節
+:大於的
-:小於的
+10M:大於10M,-10M:小於10M
組合查找(默認爲與關係)
-a同時必須滿足,查找系統上沒有屬主的普通文件
find / -nouser -a type f
-o滿足其中一個條件即可,查找系統上沒有屬主的文件或塊設備
find / -nouser -o -type -b
-not不滿足條件,查找系統上非普通文件
find / -not -type d
查找當前目錄下不能是用戶不是user1且不是user2的所有文件
find ./ -not -user user1 -a -not -user user2
find ./ -not \(-user user1 -o user2 \)
根據修改,訪問時間查找
-atime Access time,最後一次讀取的時間, ls –lu filename
-mtime Modified time,文件內容最後一次修改的時間,ls –l filename
-ctime Create time,修改修改文件權限,文件名或移動的時間,ls –lc filename
-amin 查找atime的偏移量,單位分鐘
-mmin 查找mtime 的偏移量,單位分鐘
-cmin 查找ctime的偏移量,單位分鐘
find . [-atime|-ctime|-mtime] [-/+]num
+num:表示發生在>num天以前
-mum:表示發生在>0 且<num天以內
num:表示發生在前=num天的時候
舉例:以查找mtime修改文件爲例
07-26 03:25 mbox
08-14 21:43 xxxx
查找19天以內修改的文件
find ./ -mtime -19 查找結果爲xxxx
查找前第19天修改的文件
find ./ -mtime 19 查找結果mbox
查找18天前修改過的文件
find ./ -mtime +18 查找結果是mbox
find . [-amin|-cmin|-mmin] [-/+]num
+num:表示發生在>num分鐘以後
-mum:表示發生在>0且<num分鐘以內
num:表示發生在前=num分鐘的時候
舉例:以查找mmin爲例
當前時間:8-14 22:07:23
08-14 21:43 xxxx
07-26 03:25 mbox
查找30分鐘以內修改過的文件
find ./ -mmin -30 查詢結果爲xxxx
查找前第24分鐘時修改過的文件
find ./ -mmin 24 查詢結果爲xxxx
查詢修改時間超過30分鐘的文件
fing ./ -mtime +30 查詢結果爲mbox
權限查找
-perm mode 每一位精確匹配
-perm -mode 文件權限完全包含此mode才顯示
-perm /mode 9位中任意匹配就顯示
-perm +mode 已被-perm /mode取代
查找當前文件夾rwx------權限的文件
find ./ -perm 700
查找當前文件夾含有x權限的文件
find ./ -perm /111
查找當前文件夾含有屬主其中含有r和w權限的文件夾
find ./ -perm -600
動作
-print :默認顯示 可以不加
-ls:類似ls -l的顯示
-ok COMMAND {} \;後接COMMAND,必須以\;結尾,{}引用前面查詢的結果,每一次操作需要用戶確認;
-exec COMMAND {} \;和-ok COMMAND {} \;意義相同,但不需要用戶確認操作.\
xargs 從標準輸入
找到當前目錄下超過1K的文件.並把結果輸出到文件
find ./ -size +1k |xargs echo > ./print.s