文件查找:在文件系統上查找符合條件的文件
1.locate
查找事先構建好的索引庫(/var/lib/mlocate/mlocate.db);索引庫:系統自動實現(計劃任務)或手動更新數據庫 #updatedb
工作特性:查找速度快;模糊呀查找;非實時查找;
locate [option]...PATTREN
-b 只匹配basename
-c 統計匹配到的行數
-i 忽略字符大小寫
2.find
實時查找工具,通過遍歷指定起始路徑下文件系統層級結構完成文件查找;
*工作特性*:查找速度略慢;精確查找;實時查找;
find [查找起始路徑] [查找條件] [處理動作]
查找起始路徑:默認為當前目錄
查找條件:指定的查找標準,可根據文件名,大小,權限...;默認為指定起始路徑下的所有文件;
處理動作:對符合條件的文件作出的操作;例如:刪除...;默認為輸出至屏幕
查找條件:
1.根據文件名:
-name|iname "PATTERN";此處的PATTERN指glob風格的通配(*,?,[].[^])
2.根據從屬關系:-user USERNAME;-group GROUPNAME
3.根據uid,gid號:-uid UID號;-gid GID號;
4.查找沒有屬主,屬組的文件:-nouser |-nogroup
(文件的屬主被刪除后,文件屬主,屬組位置表現為原用戶的uid,gid號;-nouser|-nogroup查找的就是此類文件)
5.根據文件類型:-type f|d|l|b|c|p|s
6.根據文件大小:-size [+|-]#單位
單位(#-1,#] ##單位:k,M,G默認是字節
-#單位:[0,#-1] 例:-5k 表示小于5k
+#單位:(#,oo)例:+5k 表示大于5k
7.根據時間戳查找
以"天"為單位:
-atime [+|-]#
-mtime [+|-]#
-ctime [+|-]#
+#:(oo,#] 例:+3表示3天前
-#:(#,0) 例:-3表示3天內
以"分鐘"為單位
-amin [+|-]#
-tmin [+|-]#
-cmin [+|-]#
8.根據權限查找:-perm [/|-]mode
mode 精確匹配權限
/mode 屬主屬組其他人的9位權限中任何一位權限滿足即滿足
-mode 屬主屬組其他人的9位權限中的每一位同時符合條件
/222 至少有一類用戶有寫權限
/001其他人有執行權限
-001其他人有執行權限
-222所有用戶都有寫權限
/022屬組或其他人有寫權限
-022屬組和其他人都有寫權限
9.限制查找目錄的層級數
-maxdepth # 最大深度為#;1表示當前目錄
-mindepth # 從第#層開始查找
find / -mindepth 2 -maxdepth 2 僅查找根目錄下的二級子目錄
10.根據節點編號查找:
-inum 節點編號
11.查找節點編號相同的文件:
·-samefile FILE
12.查找鏈接數為n的文件
-links n
13.查找/etc目錄下除了sane.d目錄下所有.conf后綴的文件(-path "/PATH" -a -prune)
find /etc -path "/etc/sane.d" -a -prune -o -name "*.conf" -ls
find /etc \( -path "/etc/sena.d" -o -path "/etc/modprobe.d" \) -a -prune -o -name "*.conf"
###查找etc目錄下除了sane.d或modprobe.d目錄下所有.conf后綴的文件
14.組合測試條件
-a 同時滿足;默認組合邏輯
-o 符合一個條件即可 ###注意:-o時,使用ls列所有符合條件的文件,需要用小括號括起來(否則僅顯示ls前一個-o匹配到的文件),且小括號需要轉義
! |-not 取反
德摩根定律:非A且非B=非(A -o B) 非A或非B=非(A -a B)
處理動作:
-ls 相當于ls -l,顯示文件的詳細信息;
-delete 刪除
-fls /PATH/TO/SOMEFILE 將查找到文件的詳細信息保存至指定的文件中;
-ok COMMAND {} \; 對查找到的文件執行由COMMAND表示的命令,需用戶確認操作;
-exec COMMAND { } \;對查找到的文件執行由COMMAND表示的命令,無需用戶確認;