8.1 檔案尋找local;find使用

來源:互聯網
上載者:User

標籤:對象   遍曆   儲存   centos   索引   關係   command   個人   即時尋找   

檔案尋找:

在檔案系統上尋找合格檔案。

檔案尋找:locate, find

非即時尋找(資料庫尋找):locate
即時尋找:find

locate

1 查詢系統上預建的檔案索引資料庫 /var/lib/mlocate/mlocate.db
2 依賴於事先構建的索引 索引的構建是在系統較為空白閑時自動進行(週期性任務),管理員手動更新資料庫 (updatedb)
3 索引構建過程需要遍曆整個根檔案系統,極消耗資源

工作特點:

? 尋找速度快
? 模糊尋找
? 非即時尋找

? 搜尋的是檔案的全路徑,不僅僅是檔案名稱
? 可能只搜尋使用者具備讀取和執行許可權的目錄

locate命令

locate KEYWORD

有用的選項
 -i 不區分大小寫搜尋  -n N 只列舉前N個匹配項目  -r 使用Regex
樣本

搜尋名稱或路徑中帶有“conf”的檔案
locate conf
使用Regex來搜尋以“.conf”結尾的檔案
locate -r ‘.conf$’

find

即時尋找工具,通過遍曆指定路徑完成檔案尋找

工作特點:

尋找速度略慢
精確尋找
即時尋找
可能只搜尋使用者具備讀取和執行許可權的目錄

find [OPTION]... [尋找路徑] [尋找條件] [處理動作]
尋找路徑:指定具體目標路徑;預設為目前的目錄
尋找條件:指定的尋找標準,可以檔案名稱、大小、類型、許可權等標準進行; 預設為找出指定路徑下的所有檔案
處理動作:對合格檔案做操作,預設輸出至螢幕

尋找條件

1指搜尋層級
-maxdepth level 最大搜尋目錄深度,指定目錄為第1級
-mindepth level 最小搜尋目錄深度
2 先處理目錄內的檔案,再處理目錄
-depth

3 根據檔案名稱和inode尋找:

-name "檔案名稱":支援使用glob *, ?, [], [^]
-iname "檔案名稱":不區分字母大小寫
-inum n 按inode號尋找
-samefile name 相同inode號的檔案
-links n 連結數為n的檔案
-regex “PATTERN”:以PATTERN匹配整個檔案路徑,而非檔案名稱

4 根據屬主、屬組尋找:

-user USERNAME:尋找屬主為指定使用者(UID)的檔案
-group GRPNAME: 尋找屬組為指定組(GID)的檔案
-uid UserID:尋找屬主為指定的UID號的檔案
-gid GroupID:尋找屬組為指定的GID號的檔案
-nouser:尋找沒有屬主的檔案
-nogroup:尋找沒有屬組的檔案

5 根據檔案類型尋找:
-type TYPE: ? f: 普通檔案  ? d: 目錄檔案  ? l: 符號連結檔案  ? s:通訊端檔案  ? b: 塊裝置檔案  ? c: 字元裝置檔案  ? p: 管道檔案

空檔案或目錄
-empty
find /app -type d -empty

尋找條件組合條件:

與:-a
或:-o
非:-not, !

德·摩根定律:

(非 A) 或 (非 B) = 非(A 且 B)
(非 A) 且 (非 B) = 非(A 或 B)

樣本:

!A -a !B = !(A -o B)
!A -o !B = !(A -a B)

find樣本:

find -name snow.png
find -iname snow.png
find / -name “.txt”
find /var –name “
log*”
find -user joe -group joe
find -user joe -not -group joe
find -user joe -o -user jane
find -not ( -user joe -o -user jane )
find / -user joe -o -uid 500

找出/tmp目錄下,屬主不是root,且檔案名稱不以f開頭的檔案
find /tmp ( -not -user root -a -not -name ‘f‘ ) -ls
find /tmp -not ( -user root -o -name ‘f
‘ ) –ls

排除目錄

尋找/etc/下,除/etc/sane.d目錄的其它所有.conf尾碼的檔案
find /etc -path ‘/etc/sane.d’ -a –prune -o -name “.conf”
尋找/etc/下,除/etc/sane.d和/etc/fonts兩個目錄的所有.conf尾碼的檔案
find /etc ( -path "/etc/sane.d" -o -path "/etc/fonts" ) -a -prune -o - name "
.conf

根據檔案大小來尋找:

-size [+|-]#UNIT 常用單位:k, M, G,c(byte)
#UNIT: (#-1, #] 如:6k 表示(5k,6k]
-#UNIT:[0,#-1] 如:-6k 表示[0,5k]
+#UNIT:(#,∞) 如:+6k 表示(6k,∞)

find / -size +10000c  #尋找出大於10000000位元組的檔案(c:位元組,w:雙字,k:KB,M:MB,G:GB)
find / -size -1000k   #尋找出小於1000KB的檔案

根據時間戳記:以“天”為單位

1 -atime 尋找系統中最後n24小時訪問的檔案
find / -atime -2 # 尋找在系統中最後48小時訪問的檔案
2 -mtime
find / -mtime -1 #尋找在系統中最後24小時裡修改過的檔案
3 -ctime 尋找系統中最後n
24小時被改變狀態的檔案

以“分鐘”為單位

1 -amin 尋找系統中最後N分鐘訪問的檔案
find / -amin -10 # 尋找在系統中最後10分鐘訪問的檔案
2 -mmin
find / -mmin -5 # 尋找在系統中最後5分鐘裡修改過的檔案
3 -cmin 尋找系統中最後N分鐘被改變狀態的檔案

根據許可權尋找:

-perm [/|-]MODE
MODE: 精確許可權匹配
/MODE:任何一類(u,g,o)對象的許可權中只要能一位匹配即可,或關係,+ 從centos7開始淘汰
-MODE:每一類對象都必須同時擁有指定許可權,與關係

0 表示不關注
find -perm 755 會匹配許可權模式恰好是755的檔案
只要當任意人有寫入權限時,find -perm +222就會匹配
只有當每個人都有寫入權限時,find -perm -222才會匹配
只有當其它人(other)有寫入權限時,find -perm -002才會匹配

處理動作

-ls:類似於對尋找到的檔案執行“ls -l”命令
-delete:刪除尋找到的檔案
-fls file:尋找到的所有檔案的長格式資訊儲存至指定檔案中
-ok COMMAND {} \; 對尋找到的每個檔案執行由COMMAND指定的命令,對於每個檔案執行命令之前,都會互動式要求使用者確認
-exec COMMAND {} \; 對尋找到的每個檔案執行由COMMAND指定的命令
當使用ok或者exec選項時,必須以\;作為結尾。其中{}表示find命令搜尋出的所有結果。所以有時會出現參數過多的命令錯誤,或者也會出現命令並不支援通過管道傳遞參數進行標準輸入。

8.1 檔案尋找local;find使用

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.