find命令是用來在給定的目錄下查找符合給定條件的文件
find [OPTIONS] [查找起始路徑] [查找條件] [處理動做]
1、OPTIONS參數
-P、
-L、-H:控制軟鏈接的對待方式,用的很少。不介紹了
2、查找路徑
就是個目錄路徑,相對和絕對均可以。
3、查找條件
(一)、根據名稱查找
-name "PATERN"
-iname "PATERN" :不區分名稱字母大小寫
-regex PATTERN:基於正則表達式的模式查找,匹配的是整個路徑,而非單個文件名。
(二)、根據文件從屬關係查找:
-user USERNAME:查找屬主指定用戶的全部文件;
-group GRPNAME:查找屬組指定組的全部文件;
-uid UID:查找屬主指定的UID的全部文件;
-gid GID:查找屬組指定的GID的全部文件;
-nouser:查找沒有屬主的文件;
-nogroup:查找沒有屬組的文件;
(三)、根據文件的類型查找:
-type:根據不一樣的文件類型篩選
f |
普通文件 |
d |
目錄文件 |
l |
符號連接文件 |
b |
塊設備 文件 |
c |
字符設備文件 |
p |
管道文件 |
s |
套接字文件 |
(四)、根據文件的大小查找:
-size [+|-]#UNIT
經常使用單位:k, M, G
#UNIT:(#-1, #]
-#UNIT:[0,#-1]
+#UNIT:(#, oo)
一、1k時:a3只有15個字節,也被算作1k也查詢,即條件符合大於0k ( #-1 ),小於等於1k (#)
二、+1k時:a和a1知足大於1k(#)的條件
三、-62k時:只有a3知足大於等於0,小於等於 61k(#-1)的要求。
(五)、 根據時間戳查找:
按照atime(文件的最後訪問時間)、mtime(文件的最後修改時間)、ctime(文件最後改變時間)三個變量來查詢:
以天爲單位,
-atime [+|-]#
#:[#, #-1) :最後訪問時間在#天前(大於等於#天前,小於#-1天前)
等價於最後訪問時間與當前的時間差 大於 (#-1)*24小時,小於等於 #*24小時
-#:(#, 0] :最後訪問時間在#天之內,不包括24小時前的那一刻。
等價於最後訪問時間與當前的時間差小於 #*24小時
+#:(oo, #-1] :最後訪問時間在#-1天之前的。包括#-1天前
等價於最後訪問時間與當前的時間差大於等於 #*24小時
-mtime
-ctime
以「分鐘」爲單位:
-amin
-mmin
-cmin
-daystart:時間條件的開始先決條件。若是沒有的時候,比較的開始時間爲當前時間。若是有此參數,則比較的開始時間爲當天的23:59:59。
查詢出來的各個文件名稱對應時間以下:
文件名 |
修改時間 |
服務器當前時間 |
09/08 17:34 |
a |
09/08 17:20 |
b |
09/07 12:20 |
c |
09/08 13:20 |
d |
09/07 22:20 |
(六)、根據權限查找
-perm
-perm [/|-]mode
mode:精確權限匹配;
/mode:任何一類用戶(u,g,o)的權限中的任何一位(r,w,x)符合條件即知足;9位權限之間存在「或」關係;
-mode:每一類用戶(u,g,o)的權限中的每一位(r,w,x)同時符合條件即知足。9位權限之間存在「與」關係;
看案例:
(1):精確查找。就是匹配權限值徹底相等的;
(2):/mode。 只要有一組用戶匹配到一個權限便可。
通俗說:就是屬主擁有給定屬主權限的某一個,或者數組擁有給定權限的某一個,或者其餘用戶擁有給定權限的某一個便可。
表示屬主擁有執行權限
或者數組擁有寫權限,
或者其餘用戶擁有寫權限
(3):-mode。而且的關係。
通俗說:就是給定的屬主權限必須擁有。而且給定的數組權限必須擁有。而且給定的其餘用戶權限必須擁有。
表示屬主擁有執行權限
而且數組擁有寫權限,
而且其餘用戶擁有寫權限
處理動做:
-print:輸出至標準輸出;默認的動做;
-ls:相似於對查找到的文件執行「ls -l」命令,輸出文件的詳細信息;
-delete:刪除查找到的文件;
-fls /PATH/TO/SOMEFILE:把查找到的全部文件的長格式信息保存至指定文件中;
-ok COMMAND {} \; :對查找到的每一個文件執行由COMMAND表示的命令;每次操做都由用戶進行確認;
-exec COMMAND {} \; :對查找到的每一個文件執行由COMMAND表示的命令;
注意:find傳遞查找到的文件路徑至後面的命令時,是先查找出全部符合條件的文件路徑,並一次性傳遞給後面的命令;
可是有些命令不能接受過長的參數,此時命令執行會失敗;另外一種方式可規避此問題:
find | xargs COMMAND