locate;
模糊查找;
基於專用的數據庫進行查找,數據庫應該事先創建,並且定期更新
可以使用updatedb命令手動更新locate數據庫
查找速度非常快,查找精確到非常有限
find
精確查找;
查找精度高,速度慢;
在指定的位置進行文件名或文件屬性的遍歷掃描,強烈不建議對根目錄進行find操作
實時查找
使用find命令只能搜索當前用戶具有讀取和執行權限的目錄
find命令的用法
find - search for files in a directory hierarchy
find [OPTIONS...] [查找路徑] [查找條件] [處理動作]
查找路徑;默認爲當前工作目錄可以指定具體的目錄的路徑
查找條件;進行本次搜索的標準,可以是文件名,文件大小,文件類型,文件權限等等;默認是指定目錄中的所有文件。
處理動作;對於符合條件的文件進行某個處理操作;默認將查找結果輸出到顯示器;
根據文件名查找;
-name 文件名稱 支持使用globbing,(*,?,[],[^])
-iname 文件名稱 忽略字母大小寫,支持使用globbing,(*,?,[],[^])
根據文件的indo編號查找;
-inum indo編號;通過給定的indo編號查找對應的文件名字及路徑;
-samefile name;通過給定的文件名查找對應的indo編號,進而確定所有具有該indo便哈珀的文件名及路徑
-links n;查找鏈接數爲n的所有文件;
根據正則表達式查找;
-regex pattrn;以pattern匹配整個文件路徑字符串,而不僅僅是給定文件的名稱;
根據文件的屬主和屬組進行查找;
-user uname;根據屬主爲指定用戶的用戶名進行查找
-uid UID;根據屬主爲某個UID進行查找
-group gname;
-gid GID;
-nogroup; 在文件的屬組上沒有組對應的組名
-nouser;在文件的屬主上沒有用戶對應的用戶名;
根據文件的類型查找;
-type 文件類型
b:塊設備
c:字符設備
d:目錄文件
f:普通文件
l:符號鏈接文件
p:管道文件
s:套接字文件
-xtype 文件類型;符號鏈接文件的匹配需要配合其他的選項;
根據時間戳進行查找;
以天爲單位;
-atime [+|-]n;根據訪問時間查找,以天爲單位
-ctime [+|-]n;根據改變時間查找,以天爲單位
-mtime [+|-]n;根據修改時間查找,以天爲單位
n;(n,n+1)
+n;[n+1,+∞]
-n;[now,n]
以分鐘爲單位;
-amin [+|-]n;根據訪問時間查找,以分鐘爲單位
-cmin [+|-]n;根據改變時間查找,以分鐘爲單位
-mmin [+|-]n;根據修改時間查找,以分鐘爲單位
根據文件的大小進行查找;
-size [+|-]n[cwbkMG]
n;(n-1,n]
-n;[0,n-1]
+n;(n,+∞)
例子;
find -size +2k
當前目錄下所有大於2KB的文件
find -size 2K
當前目錄下所有1KB-2KB之間的文件;
find -size -2K
當前目錄下所有小於1KB的文件
組合條件;
-a;邏輯與
-o;邏輯或
-not,l;邏輯非
邏輯組合條件遵循德摩根定律;
非(A 與 B) == 非A 或 非B
非(A 或 B) == 非A 與 非B
根據權限查找;
-perm [/|-]mode
mode;精準匹配指定的權限
/mode;隱含了邏輯或的關係,任何一個權限位的權限中只要能有一個權限位匹配,即可滿足條件
-mode;隱含了邏輯與的關係,沒一個權限位的權限中都必須同時包含指定權限位,才能滿足條件
所有都有,取反 任意一個沒有
(a與b與c) = !a 或 !b 或 !c
所以都沒有,取反 任意一個有
(!a與!b與!c) = a 或 b 或 c
處理動作;
-print;輸出到顯示屏幕,默認的動作
-ls;對與查找到的結果執行ls -li命令顯示
-exec COMMAND{}\;
-ok COMMAND{}\:
對於查找到的結果執行COMMAND命令
區別;
-exec是非交互式的
-ok是交互式的
{};佔位符,用來引用被find命令查找到的所有文件的路徑信息
-exec和-ok的取代執行操作:
chmod a-r $(find -perm -444 -type f)
find -perm -444 -type f | xargs chmod a-r
注意:管道輸送的是純字符串信息,所以如果管道之後的命令不是處理字符串的命令,需要使用xargs命令將其轉換成能夠被後面命令處理的參數;