linux的find命令詳解
find命令是用來在給定的目錄下查找符合給定條件的文件
find [OPTIONS] [查找起始路徑] [查找條件] [處理動作]
一、OPTIONS參數
-P、-L、-H:控制軟連接的對待方式,用的不多。不介紹了
二、查找路徑
就是個目錄路徑,相對和絕對都可以。
三、查找條件
(一)、根據名稱查找
-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)
1、1k時:a3只有15個字節,也被算做1k也查詢,即條件符合大於0k ( #-1 ),小於等於1k (#)
2、+1k時:a和a1滿足大於1k(#)的條件
3、-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
鏈接學習出自: https://www.cnblogs.com/scrit/p/5854197.html