文件查找: 在文件系統上查找符合條件的文件 實現工具:locate,find locate:依賴事先構建好的索引庫 系統本身實現(週期性任務) 手動更新數據庫(updatedb) 工做特性: 查找速度快 模糊查找 非實時查找 locate 命令: locate [OPTION]... PATTERN... -b: 只匹配路徑中的基名 -c: 統計出共有多少個符合條件的文件 -r: BRE find 命令: 文件的實時查找文件的工具,經過遍歷指定路徑 下文件系統層級結構完成文件的查找 工做特性: 查找速度很慢 精確查找 實時查找 用法: find [-H] [-L] [-P] [-D debugopts] [-Olevel] [path...] [expression] find [OPTIONS] [查找起始路徑][查找條件][處理動做] 查找起始路徑:指定具體搜索目標的起始路徑,默認爲當前目錄 查找條件:指定的查找標準,能夠根據文件名,大小,類型,從屬關係,權限等等標準進行,默認爲找出路徑下的全部符合條件的文件 處理動做:對符合查找條件的文件做出的操做,例如刪除等操做,默認爲輸出值標準輸出 查找條件: 表達式:選項和測試 測試:結果一般爲Boolean型 根據文件名查找: -name "pattern" -iname "pattern" //不區分大小寫 支持glob風格的通配符 -regex pattern:基於正則表達式模式查找文件,匹配整個路徑,而非文件名 根據文件的從屬關係查找: -user username:查找屬主爲指定用戶的全部文件 -group groupname:查找屬組爲指定組的全部文件 -uid uid:查找屬主爲指定UID全部文件 -gid gid :查找屬組爲指定GID的全部文件 -nouser:查找沒有屬主的文件 -nogroup:查找沒有屬組的文件 根據文件類型查找: -type TYPE: f:普通文件 d:目錄文件 l:符合連接文件 b:塊設備文件 c:字符設備文件 p:管道文件 s:套接字文件 組合測試: 與:-a 或:-o 非:-not,! 根據文件大小查找 -size[+|-]#UNIT 經常使用單位:k,m,g #UNIT:(#-1,#] -#UNIT:[0,#-1) +#UNIT:(#,OO) 根據時間戳查找: 以天爲單位: -atime [+|-]# #:[#,#-1) -#:(#,0] +#:(00,#-1] -mtime -ctime 以分鐘爲單位: -amin -mmin -cmin 根據權限查找: -perm [/|-]mode mode :精確權限匹配 /mode:任何一類用戶(u,g,)的權限中的任何一位(r,w,x)符合條件既知足 9位權限之間存在或的關係 -mode:每一類用戶(u,g,o)的權限中的任何一位(r,w,x)同時符合條件既知足 9位權限之間存在與的關係 處理動做: -print: 輸出至標準輸出,默認的動做; -ls:相似於對查找到的文件執行「ls -l」命令,輸出文件的詳細信息 -delete:刪除查找到的文件 -fls /PATH/SOMEFILE:把查找的文件信息保存到文件中 -ok COMMAND{}\; :對查找到的文件執行COMMAND 的命令,每次操做都有用戶確認 -exec COMMAND{}\; :對查找到的文件執行COMMAND的命令,直接修改完成 注意:find傳遞查到的文件路徑至後面的命令時,是先查找出全部符合條件的文件路徑,並一次性傳遞給後面的命令 可是有些命令不能接受過長的參數,此命令會執行失敗,另外一種方式可規避此問題: find | xargs COMMAND 練習: 1.查找/var目錄下屬主爲root,且屬組爲mail的全部文件或目錄 find /var -user root -group mail -ls 2.查找/usr目錄下不屬於root,bin或hadoop的全部文件或目錄;用兩種方法 find /usr -not \( -user root -o -user bin -o -user hadoop \) -ls find /usr -not -user root -a -not -user bin -a -not -user hadoop -ls 3.查找/etc目錄下最近一週內其內容修改過,且屬主不是root也不是hadoop用戶的文件或目錄 find /etc -not -user root -a -not -user hadoop -a -mtime -7 -ls 4.查找當前系統上沒有屬主或屬組,且最近一週內曾被訪問過的文件或目錄 find / -nouser -o -nogroup -ls -atime -7 5.查找/etc目錄下大於1M且類型爲普通文件的全部文件 find /etc -size +1M -type f `-exec ls{}\;` 6.查找/etc目錄下全部用戶都沒有寫權限的文件 find /etc -not -perm /222 -type f -ls 7.查找/etc目錄至少有一類用戶沒有執行權限的文件 find /etc/ -not -perm -111 -type f -ls 8.查找/etc/init.d/目錄下,全部用戶都有執行權限,且其餘用戶有寫權限的全部文件 find /etc/init.d -perm -113 -type f -ls