Linux文件查找之find詳解
- find:實時查找工具,通過遍歷指定路徑下文件系統層級結構完成文件查找
- 工作特性:
查找速度略慢
實時查找
精確查找 - find用法:find [option]...[查找路徑] [查找條件] [處理動作]
查找起始路徑:指定具體搜索目標起始路徑,默認認爲當前目錄
查找條件:指定的查找標準,可以根據文件名,文件類型,從屬關係,
權限等標準進行,默認爲找出指定路徑下的所有文件
處理動作:對符合查找條件的文件做出的操作,例如:刪除等操作,默認
爲輸出至標準輸出 - 查找條件:
(1)根據文件名查找:
-name "文件名稱":支持使用globbing字符
-iname"文件名稱":查找時忽略字符大小寫
:匹配任意長度的任意字符
?:匹配單個字符
-regex pattern:基於正則表達式查找文件,匹配是整個路徑而非其名
(2)根據文件從屬關係查找:
-user USERNAME:根據文件的屬主查找
-group GROUPNAME:根據文件的屬組查找
-uid UID:查找屬主指定的UID的所有文件;
-gid GID:查找屬組指定的GID的所有文件;
-nouser:查找沒有屬主的文件
-nogroup:查找沒有屬組的文件
(3)根據文件類型:
-type TYPE:根據文件類型查找
f:普通文件
d:目錄文件
l:符號文件
b:塊設備
c:字符設備
s:套接字文件
p:命名管道
(4)根據文件大小查找:
-size [+|-] #UNIT: 常用單位:k,M,G
#UNIT:(#-1, #]
-#UNIT:[0,#-1]
+#UNIT:(#, oo)
(5)根據時間戳查找:
按照atime(文件最後訪問時間),mtime(文件的最後修改時間),ctime(文件最後改變時間)三個變量來查詢:
以天爲單位:
-atime[+|-]#:
#:[#, #-1) :最後訪問時間在#天前(大於等於#天前,小於#-1天前)
等價於最後訪問時間與當前的時間差 大於 (#-1)24小時,小於等於 #24小時
-#:[#-1, 0]:最後訪問時間在#天以內,不包括24小時前的那一刻。
等價於最後訪問時間與當前的時間差小於 #24小時
+#:(oo, #]:最後訪問時間在#天以前的。包括#-1天前
等價於最後訪問時間與當前的時間差大於等於 #*24小時
以分鐘爲單位:
-amin,-mmin,-cmin
(6)根據權限查找:
-perm [/|-] mode:
mode:精確權限匹配
/mode:任何一類用戶(u,g,o)的權限中任何一位(r,w,x)符合條件即滿足,9位權限之間存在“或”關係
-mode:每一類用戶(u,g,o)的權限中每一位(r,w,x)都符合條件即滿足,9位權限存在“與”關係
(7)組合條件查詢:
與:-a,同時滿足
或:-o,滿足一個即可
非:-not,!,條件取反
-not A -a -not B = -not (A -o B)
-not A -o -not B = -not (A -a B) -
處理動作:
-print:輸出至標準輸出(默認)
-ls:類似於對查到的文件執行"ls -l"
-delete:刪除查找的文件
-fls /PATH/TO/SOMEFILE:把查找到所有文件的長格式保存至指定文件中
-ok COMMAND {} \;對查找的文件執行COMMAND表示的命令,,每次操作都由用戶進行確認
-exec COMMAND {} \; 對查找的文件執行COMMAND表示的命令注意:find傳遞查找的文件路徑至後面的命令時,是先查找所有符合條件的文件路徑,並一次性傳遞給後面的命令,但是有些命令不能接受過長的參數,此時命令會執行失敗,另一種方式可規避此問題: find | xargs COMMAND