歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux技術 >> 文件查找find與locate

文件查找find與locate

日期:2017/3/3 11:05:41   编辑:Linux技術

文件查找:find,locate

*** locate 路徑名 中包含字符串 即匹配;依賴於已建立的數據庫 速度較快 類似whatis搜索實現

系統自動周期實現

updatedb 手動更新數據庫

索引構建極消耗資源

特征:速度較快 模糊查找 !非實時查找-b 只匹配路徑名中的基名

-c 統計符合條件的文檔數量

-r BRE 可使用正則表達式

locate ./ *.repo 本目錄下.repo結尾的文件或目錄

*** find [OPTIONS] [查找起始路徑][查找條件][處理動作]起始路徑:指定目錄下搜索 默認當前目錄;

查找條件:指定查找標准, 文件名 大小 類型等

查找動作:對匹配到的對象進行的操作 默認為輸出至標准輸出 輸出至屏幕

特征:查找速度略慢 精確查找 實時查找查找條件:

表達式:選項;標准

標准: 執行結果為布爾值

1.根據文件名查找: 支持通配符-name "patt" find /etc -name passwd[[:alnum:]]

-iname "patt"不區分大小寫 find /etc -iname *passwd

2.根據屬主屬組查找: find /testdir -uid=1000-user USER ==> -uid UID 屬主 為指定用戶 的文件

-group GROUP ==> -gid GID 屬組 為指定組 的文件

存在 用戶被移除 文件無屬主的情況

-nouser 查找 無屬主的文件 find /testdir -nouser

-nogroup 查找 無屬組的文件

例 find /testdir -user zjj -type p

/testdir下 屬主為zjj的 管道文件

find /tmp -not \( -user root -o -iname "*zz*"\)

/tmp 目錄下 屬主不為root 且 基名不包含zz的文件

3.根據類型查找: find /dev -type s -ls-type TYPE

b: 塊設備文件

c: 字符設備文件

d: 目錄文件

f: 普通文件

l: 符號鏈接設備 軟鏈接

p: 管道文件

s: 套接字文件

4.文件大小查找:-size [+|-]#UNIT

常用單位:K,M,G 相對 單位精確查找

#UNIT:(#-1,#]

-#UNIT:[0,#-1]

+#UNIT:(#,∞) find /tmp -size +10K /tmp下大於10K的文件 11K-∞

5.根據時間戳查找:以 天 為單位:

-atime [+|-]#

#:[#,#-1) 前 第3天

-#:(#,0] 前 3天以內

+#:(∞,#-1) 3天之前

-mtime7

-ctime

以 分鐘 為單位

-amin

-mmin

-cmin

例 find /etc -mmin -3 3分鐘內修改過的文件

6.根據權限查找:-perm [/|-] mode

mode 精確查找 find -perm 421 查找權限為421的文件

-mode 任何一類用戶(u,g,o)的 每一位(r,w,x)都大於等於mode

例 find ./ -perm -624 匹配當前目錄u>=6 g>=2 o>=4 的文件

文件權限包含mode即匹配

/mode 任何一類用戶(u,g,o)的 任何一位(r,w,x)符合條件即滿足

例 find ./ -perm /124 匹配當前目錄u=1 或g=2 或o=4 的文件

滿足其中之一即匹配

例 find ./ -perm /011 不管u權限 g或o有寫權限即匹配

組合標准:與 -a 默認的邏輯

或 -o 滿足之一則匹配

非 -not,!

處理動作:-print 輸出至標准輸出

-ls 類似對查到的文件執行 ls -l 輸出文件詳細信息

find ./ -d zjj -amin -5 -not -perm /222 -ls

-delete 刪除查找到的文件!

-fls /PATH 將文件詳細的信息 保存至指定文件

-ok CMD {} \; 對查找到的 每個文件執行CDM命令 會逐條要求確認

固定格式\; {}表示查到的所有文件

例 find ./ -nouser -a -nogroup -ok chown zjj:zjj {} \;

查找當前目錄下 無屬主無屬組的文件 全部添加屬主屬組zjj

-exec CMD {} \; 相對-ok 無確認環節 直接執行CMD

例 find ./ -perm /002 -exec mv {} {}.danger \;

當前目錄下 o有寫權限的 文件名加上.danger後綴

find查找到所有文件後會 將結果一次行傳遞給命令,有些命令不能接受過長的參數找到的文件過多會導致命令執行失敗可用 find ...| xargs CMD

xargs把一個數據流分割為一些足夠小的塊,以方便過濾器和命令進行處理

本文出自 “平平無奇” 博客,請務必保留此出處http://zzjasper.blog.51cto.com/9781564/1831447

Copyright © Linux教程網 All Rights Reserved