find使用說明

find使用說明正則表達式

1、定義數據庫

在文件系統上查找符合條件的文件的過程數組

2、命令工具bash

locate:非實時查找工具,依賴於系統在較空閒時自動構建的索引數據庫查找。socket

優勢:按索引查找,速度更快;ide

缺點:索引數據庫的構建並不是是根據文件的修改實時更新。因此,查找的信息是過時的,只可以模糊查詢;工具

find:實時查找;find查找須要遍歷整個默認或指定的目錄,可以作到精確查找,查找速度卻很慢。oop

 

3、find使用說明ui

find [OPTION]... [查找路徑] [查找條件] [處理動做]spa

查找路徑:默認爲當前路徑

查找條件:根據OPTION指定查找標準,具體條件能夠使用正則表達式匹配

處理動做:對符合條件的文件做出的動做;默認爲輸出到屏幕


OPTION和查找條件:

1、根據文件名查找:

-name FILENAME  可以使用正則匹配

-inameFILENAME 不區分字符大小寫

-regex  "PATTERN"  匹配整個文件路徑字符串,而不單單是文件名


2、根據文件類型查找:

-type f|b|d|l|c|s

f:普通文件

b:塊文件

c:字符文件

d:目錄

l:連接文件

ssocket 套接字文件

3、根據屬主,屬組查找

-nouser   查找沒有屬主的文件

-nogroup  查找沒有屬組的文件

-user USERNAME   查找屬主爲USERNAME的文件

-group GROUPNAME 查找屬組爲GROUPNAME的文件

-uid UID

-gid GID

4、根據文件大小查找

-size [+|-] #    

單位:K,M,G 

# (#-1,#]    #-1 < filesize <= #

+# (#,+oo)    #  < filesize 

-# [0,#-1)    0 <= filesize < #-1 

5、根據時間戳

單位爲」天「

-atime  accessed時間戳

-mtime  modified時間戳  修改內容

-ctime  changed時間戳   修改內容,屬性

單位爲」分「

-amin

-mmin

-cmin

 #   [#,#+1)   #   # <= file[a|m|c]time < #+1 

+#  [#+1,+oo]  #天前  #+1 <= file[a|m|c]time

-#  [0,#)     #天內   0 <= file[a|m|c]time < #

註解:#爲當前時間減去文件時間戳的時間



6、根據權限

 -perm [+|-]MODE

            MODE:MODE精確匹配

            /MODE+MODE:任何一類用戶只要能包含對其指定的任何一位權限便可  

例:+555  表示只要目錄文件只要屬主或數組或任何人中只要有WX就匹配

            -MODE:每一類用戶的權限都包含對其指定的因此權限

            -222:   666權限的文件符合   664不符合

7、組合查找

與:-a and

或:-o or

非:-not !

公式:

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

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

處理動做

-print: 默認處理動做

-ls:相似於對查找到的每一個文件作"ls -l"的操做;

-delete: 刪除查找到的文件;

-fls /path/to/somefile:查找到的文件的詳細路徑信息保存至指定文件中;

 

-ok COMMAND {} \;

對每一個文件執行指定的命令以前須要用戶事先確認;

-exec COMMAND {} \;

無需用戶確認;

4、練習

一、查找/var目錄屬主爲root,且屬組爲mail的全部文件;

# find /var -user root -group mail -ls

二、查找/usr目錄下不屬於root、bin或hadoop的全部文件;

# find /usr ! \( -user root -o bin -o hadoop \) -ls

三、查找/etc目錄下最近一週內其內容修改過,且屬主不爲root或hadoop的全部文件;

# find /etc ! \( -user root -o hadoop \) -mtime -7 -ls

四、查找當前系統上沒有屬主或屬組,且最近一週內曾被訪問過的全部文件;

# find / \( -nouser -a -nogroup \) -a -atime -7  -ls

五、查找/etc目錄下大於20k且類型爲普通的全部文件;

# find /etc -type f -size +20k -ls

六、查找/etc目錄下全部用戶都沒有寫權限的文件;

# find /etc ! -perm +222 -ls

七、查找/etc目錄下至少有一類用戶沒有執行權限的文件;

# find /etc ! -perm -111 -ls

八、查找/etc/init.d目錄下,全部用戶都有執行權限,且其它用戶擁有寫權限的文件;

# find /etc/init.d -perm -113 -ls
相關文章
相關標籤/搜索