Find命令簡介與使用

用途:

        find命令用來在指定目錄下查找文件。任何位于參數之前的字符串都將被視為欲查找的目錄名。如果使用該命令時,不設置任何參數,則find命令將在當前目錄下查找子目錄與文件。并且將查找到的子目錄和文件全部進行顯示。

語法:

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

選項:

     根據文件名和inode查找:
        -name "文件名稱":支持使用glob
        *, ?, [], [^]
        -iname"文件名稱":不區分字母大小寫
        -inumn 按inode號查找
        -samefilename 相同inode號的文件
        -links n 鏈接數為n的文件
        -regex "PATTERN":以PATTERN匹配整個文件路徑字符串,而不僅僅是文件名稱
    根據屬主、屬組查找:
        -user USERNAME:查找屬主為指定用戶(UID)的文件
        -group GRPNAME: 查找屬組為指定組(GID)的文件
        -uidUserID:查找屬主為指定的UID號的文件
        -gidGroupID:查找屬組為指定的GID號的文件
        -nouser:查找沒有屬主的文件
        -nogroup:查找沒有屬組的文件
    根據文件類型查找:
        -type TYPE:
        f: 普通文件

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

    組合條件:
        與:-a
        或:-o
        非:-not, !

    根據文件大小來查找:
        -size [+|-]#UNIT
            常用單位:k, M, G
        #UNIT: (#-1, #]
            如:6k 表示(5k,6k]
        -#UNIT:[0,#-1]
            如:-6k 表示[0,5k]
        +#UNIT:(#,∞)
            如:+6k 表示(6k,∞)

    根據權限查找:
        -perm [/|-]MODE
        MODE: 精確權限匹配
        /MODE:任何一類(u,g,o)對象的權限中只要能一位匹配即可,或關系,+ 從centos7開始淘汰
        -MODE:每一類對象都必須同時擁有指定權限,與關系0 表示不關注
        find-perm755會匹配權限模式恰好是755的文件
    只要當任意人有寫權限時,find-perm+222就會匹配
    只有當每個人都有寫權限時,find-perm-222才會匹配
    只有當其它人(other)有寫權限時,find-perm-002才會匹配
處理動作

    -print:默認的處理動作,顯示至屏幕;
    -ls:類似于對查找到的文件執行“ls -l”命令
    -delete:刪除查找到的文件;
    -flsfile:查找到的所有文件的長格式信息保存至指定文件中
    -ok COMMAND {} \; 對查找到的每個文件執行由COMMAND指定的命令;
        對于每個文件執行命令之前,都會交互式要求用戶確認
    -exec COMMAND {} \; 對查找到的每個文件執行由COMMAND指定的命令
    {}: 用于引用查找到的文件名稱自身
    find傳遞查找到的文件至后面指定的命令時,查找到所有符合條件的文件一次性傳遞給后面的命令
    有些命令不能接受過多參數,此時命令執行可能會失敗,下面方式可規避此問題
        find | xargsCOMMAND

 

示例與目錄:

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

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

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

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

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

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

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

8、find-namesnow.png
    搜索名為snow.png的文件
9、find-inamesnow.png
    不分大小寫地搜索名為snow.png、Snow.png、SNOW.PNG等等的文件
10、find / -name “*.txt”
11、find /var –name “*log*”
12、find-userjoe -groupjoe
13、find /home –type d -ls

14、find-userjoe-not-groupjoe
15、find-userjoe-o-userjane
    或者:find-not\(-userjoe-o-userjane\)
16、find/-userjoe-o-uid500 

17、找出/tmp目錄下,屬主不是root,且文件名不以f開頭的文件
        find /tmp\( -not -user root -a -not -name 'f*' \) -ls
        find /tmp-not \( -user root -o -name 'f*' \) –ls
18、查找/etc/下,除/etc/sane.d目錄的其它所有.conf后綴的文件
        find /etc-path ‘/etc/sane.d’ -a -prune -o -name “*.conf” -print
19、find -name “*.conf” -exec cp {} {}.org \;
        備份配置文件,添加.orig這個擴展名
20、find/tmp-ctime+3-userjoe-okrm{}\;
        提示刪除存在時間超過3天以上的joe的臨時文件
21、find~-perm-002 -execchmodo-w{}\;
22、在你的主目錄中尋找可被其它用戶寫入的文件
        find /data –type f -perm 644 -name “*.sh” –exec chmod 755 {} \;

 

 ====================================================================

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

 [root@centos6 var]# find /var/ -user root -a -group mail

1.jpg 

 

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

[root@centos6 var]# find -not \( -user root -o -user lp -o -user gdm \) -ls

2.jpg 

 

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

[root@centos6 ~]# find /var/ -mtime -7 -not \( -user root -o -user postfix \)

3.jpg

 

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

[root@centos6 ~]# find / \( -nouser -o -nogroup \) -atime -7

4.jpg

 

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

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

5.jpg

 

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

[root@centos6 ~]# find /etc/ -not -perm /222 -ls

6.jpg

 

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

[root@centos6 ~]# find /etc/init.d/ -perm -113

7.jpg

 

8、find-name snow.png
8.jpg    

9、find-iname snow.png
9.jpg    

10、find / -name “*.txt”

10.jpg

11、find /var –name “*log*”

11.jpg

12、find -user joe -group joe

12.jpg

13、find /home –type d -ls

13.jpg

 

14、find -user joe -not -group joe

 14.jpg

15、find-user joe -o -user jane

    或者:find -not \( -user joe -o -user jane\)

15.jpg

16、find / -user joe -o -uid 500

17.jpg

 

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

17.jpg

18、查找/etc/下,除/etc/sane.d目錄的其它所有.conf后綴的文件
       find /etc-path ‘/etc/sane.d’ -a -prune -o -name “*.conf” -print

18.jpg

19、find -name “*.conf” -exec cp {} {}.org \;
       備份配置文件,添加.orig這個擴展名

19.jpg

20、find /tmp -ctime +3 -user joe -ok rm {} \;
       提示刪除存在時間超過3天以上的joe的臨時文件
21、find ~ -perm -002 -exec chmod o-w {} \;
22、在你的主目錄中尋找可被其它用戶寫入的文件
       find /data –type f -perm 644 -name “*.sh” –exec chmod 755 {} \;

 

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

(0)
msj77539273msj77539273
上一篇 2016-08-30 17:51
下一篇 2016-08-30 22:49

相關推薦

  • 安裝CentOS6.8操作系統

        工具:     VMware Workstation 12     http://www.vmware.com/cn/products/workstation/workstation-evaluation.html  &n…

    Linux干貨 2016-08-04
  • 路由器解析路由表

    1.定義——>選擇最佳路徑;他只完成發送到下一個路徑上就結束,任務到達就撤了(就像快遞員一樣,當他將物件發往到下一個目的地,那他的任務就結束了)2.分類:主機路由、網絡路由、默認路由3.每個路由記錄由四項主要組成部分目標地址:主機IP、網絡ID號、未知地址(0.0.0.0)子網掩碼接口interface:從哪個口發往目標地址 網…

    2017-09-05
  • redis 主從復制實戰

    1.準備好4臺機器 192.168.42.150 redis-node1 #主 192.168.42.151 redis-node2 #從 192.168.42.152 redis-node3 #從 192.168.42.153 redis-node4 #從 將主機解析寫入hosts文件,分發至每臺機器 2.安裝redis,配置好基本配置 (1) 4臺機器,…

    Linux干貨 2017-07-18
  • python內建函數

    # Python內建函數(部分)– 標識id返回對象的唯一標識,CPython返回內存地址– 哈希hash()返回一個對象的哈希值– 類型type()返回對象類型– 類型轉換float() int() bin() hex() oct() bool() list() tuple() dict()set() com…

    Linux干貨 2017-10-09
  • N26 第六周作業

    總結vim編輯器的使用 Vim 模式    Vim 有六種基本模式    Normal mode                 Visual mode&nbs…

    Linux干貨 2017-02-01
  • Linux 第二天: (07月22日) 練習和作業

    Linux 第二天: (07月22日) 練習和作業         echo 顯示閃爍, 下劃線, 彩色, 倒三角形 ******* *****  ***   *   #!/bin/bash read -p "Input line number: "…

    Linux干貨 2016-08-08

評論列表(1條)

  • 馬哥教育
    馬哥教育 2016-09-10 11:47

    對find命令的用法總結的很詳細,練習部分怎么沒做完就發布了?

欧美性久久久久