文件查找的方法
locate命令
非實時查找(數據庫查找): locate查詢系統上預建的文件索引數據庫 /var/lib/mlocate/mlocate.db
依賴于事先構建的索引;索引的構建是在系統較為空閑時自動進行(周期性任務);管理員手動更新數據庫(updatedb);
索引構建過程需要遍歷整個根文件系統,極消耗資源;
工作特點:
查找速度快;
模糊查找
非實時查找
搜索的是文件的全路徑,不僅僅是文件名
可能只搜索用戶具備讀取和執行權限的目錄
v 常用選項
-i 忽略大小寫
-n 只搜索符合條件的前幾個
例如:locate “test” -n 3
只搜符合“test”條件的前三個
-r 使用正則表達式來搜
例如:locate -r “^.*\.sh”
搜索以.sh結尾的文件
-b 匹配基名
-c 顯示總共搜到了符合條件的數量
find命令實時查找工具,通過遍歷指定路徑完成文件查找;
工作特點:
查找速度略慢
精確查找
實時查找
可能只搜索用戶具備讀取和執行權限的目錄find
語法:find [OPTION]… [查找路徑] [查找條件] [處理動作]
查找路徑:指定具體目標路徑;默認為當前目錄
查找條件:指定的查找標準,可以文件名、大小、類型、
權限等標準進行;默認為找出指定路徑下的所有文件
處理動作:對符合條件的文件做操作,默認輸出至屏幕查找條件
根據文件名稱和inode編號查找
-name 根據文件名稱查找,支持通配符。
-iname 不區分搜索條件大小寫
-inum n 根據文件inode號查找
-samefile name 搜索相同的inode號文件
-links n 搜索鏈接數為n的文件
-regex “PATTERN” 按正則表達式搜索
根據屬主、屬組查找
-user 查找屬主
-group 查找屬組
-uid 查找符合條件的UID號文件
-gid 查找符合條件的GID文件
-nouser 查找沒有屬主的文件
-nogroup 查找沒有屬組的文件
根據文件類型查找
-type
f 普通文件
d 目錄
l 符號鏈接
s 套接字文件
b 塊設備
c 字符設備
P 管道文件
組合條件
-a 與
-o 或
-not ! 非
德·摩根定律
非(p且q)=(非p)或(非q)
非(p或q)=(非p)且(非q)
根據文件大小查找
-size # 常用單位 K M G
# #-1<file≤#
例如:find -size 10k file
表示查找大小在9<file≤10的文件
-# 0≤file≤#-1
例如:find -size -10K file
表示查找大小在0≤file≤9的文件
+# #<∞
例如:find -size +10k file
表示查找大于10k的文件
根據時間戳
以天為單位
-atime #
# #≤file<#+1
+# #+1≤file≤∞
-# 0≤file<#
-mtime
-ctime
以分鐘為單位
-amin
-cmin
-mmin
根據權限查找
-perm MODE
MONE 精確匹配權限
/MONE 任何一類(u,g,o)對象的權限中只要能一位匹配即可,是或
的關系,“+”從centos7開始淘汰。
-MONE 每一類對象都必須同時擁有指定的權限,是與的關系。
0 表示不關注。
上圖中,保留u g上原有的權限,只刪選符合o上有執行權限的文件。
處理動作
-print 默認的處理動作 顯示至屏幕
-ls 相當于 ls -l
-delete 刪除查找到的文件
-fls file 查找到的文件的長格式信息保存至指定的文件。
例如:find -name “f*” -fls /root/find.txt
將查找到的以“f”開頭的文件存入/root/find.txt文件中。
用重定向也可以將搜索到的文件存入指定文件中
-ok COMMAND {} \ ; 對查找到的每個文件執行由COMMAND指定的命令。
例如:find -name “f*” -ok cp{} {}.bak \;
對查到的每個以“f”開頭的文件執行復制命令,并且以.bak為后
綴。
-exec COMMAND {} \ ;
例如: find -name “ip.sh” -exec cp {} /testdir/f1 \; 下圖劃紅線的地方未出先提示信息,
而用-ok會出現提示信息“是否復制文件”的提示信息。
有些命令不能接受過多的參數,此時命令執行可能會失敗,用xargs命令可以規避此問題。
find | xargs COMMAND
原創文章,作者:zzd,如若轉載,請注明出處:http://www.www58058.com/34727
對find命令的常見選項總結的很詳細,同時,find的處理動作也是很重要的哦,這也是需要我們多加練習的。