文件查找:數據庫
在文件系統上查找符合條件的文件數組
文件查找:locate(非實時查找),find(實時查找)工具
locate:ui
依賴於事先構建的索引,索引的構建是在系統較爲空閒時自動進行(週期性任務):手動更新數據庫spa
索引構建過程須要遍歷整個根文件系統,極消耗資源對象
工做特色:索引
查找速度快資源
模糊查找字符串
非實時查找file
find:
實時查找工具,經過遍歷指定路徑下的文件系統完成文件查找:
工做特色:
查找速度略慢
精確查找
實時查找
語法:
find [OPTION] ……[查找路徑] [查找條件] [處理動做]
查找路徑:指定具體目標路徑:默認爲當前目錄
查找條件:指定的查找標準,能夠文件名、大小、類型、權限等標準進行,默認爲找出指定路徑下的全部文件
處理動做:對符合條件的文件作什麼操做,默認輸出至屏幕
查找條件:
根據文件名查找:
-name 「文件名稱」:支持使用glob *,?,[ ],[^]
-iname 「文件名稱」:不區分大小寫
-regex 「PATTERN」:以PATTERN匹配整個文件路徑字符串,而不單單是文件名稱
根據屬主、屬組查找:
-user USERNAME:查找屬主爲指定用戶的文件
group GRPNAME:查找屬組爲指定組的文件
-uid UserID:查找屬主爲指定UID號的文件
-gid GroupID:查找數組爲指定GID號的文件
-nouser:查找沒有屬主的文件
-nogroup:查找沒有屬組的文件
根據文件類型查找:
-type TYPE:
f:普通文件
d:目錄文件
l:符號連接文件
s:套接字文件
b:塊設備文件
c:字符設備文件
p:管道文件
組合條件:
與:-a
或:-o
非:-not,!
!A -a !B=!(A -o B)
!A -o !B=!(A -a B)
例如:找出/tmp目錄下,屬主不是root,且文件名不是fstab的文件:
find /tmp \(-not -user root -a -not -name 'fstab' \) -ls
find /tmp -not \(-user root -o -name 'fstab' \) -ls
根據文件大小來查找:
-size [+|-]#UNIT
經常使用單位:k,M,G
#UNIT:(#-1,# ]
-#UNIT:[ 0,#-1 ]
+#UNIT:(#,∞)
根據時間戳:
以「天」爲單位:
-atime [ +|- ] #
#:[#,#+1)
+#:[#+1,∞]
-#:[0,#)
-mtime
-ctime
根據權限查找:
-perm [+|-]MODE
MODE:精確權限匹配
+MODE:任何一類(u,g,o)對象的權限中只要能一位匹配便可
-MODE:每一類對象都必須同時擁有爲其指定的權限標準
處理動做:
-print:默認的處理動做,顯示至屏幕
-ls:相似於對查找到的文件執行「ls -l」命令
-delete:刪除查找到的文件
-fls /path/to/somefile:查找到的全部文件的長格式信息保存至指令文件中
-ok COMMAND {}\:對查找到的每一個文件執行由COMMAND指定的命令,執行前都會交互式要求用戶確認
-exec COMMAND {}\:對查找到的每一個文件執行由COMMAND指定的命令
注意:find傳遞查找到的文件至後面指定的命令時,查找到全部符合條件的文件一次性傳遞給後面的命令,有些命令不能接受過多的參數,此命令執行可能會失敗,另外一種方式可規避此問題:
find | xargs COMMAND