文件查找命令find詳解

文件的查找命令 find 用法

功能:實時查找工具,通過遍歷指定路徑完成文件查找

工作特點:

?  查找速度略慢
?  精確查找
?  實時查找
?  可能只搜索用戶具備讀取和執行權限的目錄

語法:

  find [OPTION]… [查找路徑] [查找條件] [處理動作]

查找路徑:指定具體目標路徑;默認為當前目錄
查找條件:指定的查找標準,可以文件名、大小、類型、權限等標準進行;默認為找出指定路徑下的所有文件
處理動作:對符合條件的文件做操作,默認輸出至屏幕

1.find 查找條件

1.1根據文件名和inode查找:

  • -name "文件名稱":支持使用glob

  • *, ?, [], [^]

  • -iname "文件名稱":不區分字母大小寫

  • -inum n  按inode號查找

  • -samefile name  相同inode號的文件

  • -links n  鏈接數為n的文件

  • -regex "PATTERN":以PATTERN匹配整個文件路徑字符串,而不僅僅是文件名稱

        find -name snow.png
      ? 搜索名為snow.png的文件
        find -iname snow.png
      ? 不分大小寫地搜索名為snow.png、Snow.png、SNOW.PNG等等的文件
       find / -name “*.txt”  搜索后綴為.txt的文件
       find /var –name “*log*”

1.2根據屬主、屬組查找:

  • -user USERNAME:查找屬主為指定用戶(UID)的文件

  • -group GRPNAME: 查找屬組為指定組(GID)的文件

  • -uid UserID:查找屬主為指定的UID號的文件

  • -gid GroupID:查找屬組為指定的GID號的文件

  • -nouser:查找沒有屬主的文件

  • -nogroup:查找沒有屬組的文件

       find -user gentoo  -group gentoo
       搜索被用戶gentoo 以及組群gentoo所擁有的文件

1.3根據文件類型查找:

-type TYPE:

?  f: 普通文件
?  d: 目錄文件
?  l: 符號鏈接文件
?  s:套接字文件
?  b: 塊設備文件
?  c: 字符設備文件
?  p: 管道文件

組合條件:

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

找出/tmp目錄下,屬主不是root,且文件名不以f開頭的文件
    find /tmp \( -not -user root -a -not -name 'f*' \) -ls
    find /tmp -not \( -user root -o -name 'f*' \)  –ls

1.4根據文件大小來查找:

-size [+|-] #計算單位    

常用單位:b,c,w,k, M, G

  • #k 表示(#-1k,#k]

  • -#k 表示[0,#-1k]

  • +#k 表示(#k,+∞)

1.5根據時間戳:

以“天”為單位;

  • -atime [+|-]#,

    • #: [#,#+1)

    • +#: [#+1,∞]

    • -#: [0,#)

  • -atime

  • -ctime

  • —mtime

以“分鐘”為單位:

  • -amin

  • -cmin

  • -mmin

      訪問時間(-atime/天,-amin/分鐘):用戶最近一次訪問時間。 
      修改時間(-mtime/天,-mmin/分鐘):文件最后一次修改時間。 
      變化時間(-ctime/天,-cmin/分鐘):文件數據元(例如權限等)最后一次修改時間。

1.6根據權限查找:

-perm [/|-]MODE
MODE: 精確權限匹配

  • /MODE:任何一類(u,g,o)對象的權限中只要能一位匹配即可,或關系,+ 從centos7開始淘汰

  • -MODE:每一類對象都必須同時擁有指定權限,與關系

    ?0 表示不關注

? find -perm 755 會匹配權限模式恰好是755的文件

? 只要當任意人有寫權限時,find -perm +222就會匹配

? 只有當每個人都有寫權限時,find -perm -222才會匹配

? 只有當其它人(other)有寫權限時,find -perm -002才
會匹配

2.find 處理動作

  • -print:默認的處理動作,表示顯示至屏幕;

  • -ls:類似于對查找到的文件執行“ls -l”命令

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

  • -fls file:查找到的所有文件的長格式信息保存至指定文件中

  • -ok COMMAND {} \: 對查找到的每個文件執行由COMMAND指定的命令;對于每個文件執行命令之前,都會交互式要求用戶確認()

  • -exec COMMAND {} \:對查找到的每個文件執行由COMMAND指定的命令,沒有確認

注意:

find傳遞查找到的文件至后面指定的命令時,查找到所有符合條件的文件一次性傳遞給后面的命令
有些命令不能接受過多參數,此時命令執行可能會失敗,下面方式可規避此問題
find | xargs COMMAND

操作練習

1、查找/var目錄下屬主為root,且屬組為mail的所有文件

[root@localhost ~]# find /var -user root -group mail
/var/spool/mail
/var/spool/mail/root

2、查找/var目錄下不屬于root、lp、gdm的所有文件

 #find /var \( -not -user root -a -not -user lp -a -not -user gdm \)  -ls

3、查找/var目錄下最近一周內其內容修改過,同時屬主不為root,也不是postfix的文件

# find /var \( -mtime -7 -a -not -user root -a -not -user postfix \) -ls

4、查找當前系統上沒有屬主或屬組,且最近一個周內曾被訪問過的文件

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

5、查找/etc目錄下大于1M且類型為普通文件的所有文件

[root@localhost ~]# find /etc -size +1M -type f

6、查找/etc目錄下所有用戶都沒有寫權限的文件

# find /etc/ -not -perm /222 -ls

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

# find /etc/ -not -perm -111 -ls

8、查找/etc/init.d目錄下,所有用戶都有執行權限,且其它用戶有寫權限的文件

# find /etc/init.d -perm -113

原創文章,作者:N24_yezi,如若轉載,請注明出處:http://www.www58058.com/58192

(1)
N24_yeziN24_yezi
上一篇 2016-11-07
下一篇 2016-11-07

相關推薦

  • 利用keepalived實現nginx七層負載均衡器雙主模型高可用集群

    nginx通過ngx_http_upstream_module可以實現七層http服務的負載均衡,同時還自帶RS的健康監測功能,但是也有弊端,nginx負載均衡器如果發生故障則整個集群失效,此文通過keepalived構建nginx負載均衡器的高可用集群。 一、實驗環境: 實驗需要4臺服務器: nginx負載均衡器1:192.168.11.100 nginx…

    2017-07-03
  • 邏輯卷管理器LVM使用簡介

    邏輯卷管理器(LVM) 原理圖如下: 先準備一個分區/dev/sdb1,注意也存在ID問題,選擇8e。 1.先把磁盤變成物理卷 在做這步前可以先看下系統中存在的物理卷,沒有就什么都不會顯示。 把我們準備好的兩個磁盤變成物理卷,注意我那使用舊的格式化的分區磁盤,可能會出現上面有文件系統或者卷標類型的問題,所以盡量使用新磁盤做實驗。如果出現這種情況,可以使用dd…

    2017-05-02
  • linux再次入門

               時隔一年,重新拾起Linux,從頭開始再學一遍            現在來總結一下曾經可能聽說過但是我以前絕對不會的命令(尷尬臉) 克隆窗口:右鍵單擊點克隆窗口(真是…

    2017-07-15
  • LVS常見的類型實現方式

    前言  由于lvs的基礎知識已經在第一篇lvs中講解了,所以在這里只做實驗,包括lvs-nat,lvs-dr,以及基于Freiwall標記和實現會話綁定實驗。 一、lvs-nat:也是MASQERADING,簡稱為m(masquerading)    實驗圖:     地址規劃:     …

    Linux干貨 2015-06-29
  • Linux基礎知識及常用命令

    pwd:printing working directory -顯示當前工作目錄            [root@edu tmp]# pwd          &nbs…

    Linux干貨 2016-09-15
  • Centos6基于虛擬主機的Lamp配置bbs、Blog、PhpMyAdmin應用程序

    Centos6實現基于虛擬主機的各應用程序搭建: 一、配置三個基于名稱的虛擬主機;       虛擬主機一、discuzX       虛擬主機二、wordpress       虛擬主機三…

    2017-06-01
欧美性久久久久