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
下一篇 2016-08-30

相關推薦

  • Linux用戶和組管理

        登錄Linux時我們都需要輸入賬號和密碼,但Linux只會識別賬號所對應用ID號,這個ID號就稱為UID。     同理每個用戶組也都擁有相對應的組ID號,即GID。     Linux根據/etc/passwd文件的內容來查找當前…

    Linux干貨 2015-04-26
  • 文件系統結構

    -文件系統結構
    -應用程序的組成部分
    -文件類型

    2018-03-13
  • 詳解LAMP源碼編譯安裝

    詳解LAMP源碼編譯安裝 LAMP簡介 LAMP是當下非常流行的一套Web架構,我們可以在GNU/Linux下通過其他人打包的程序包來進行安裝; 但是在生產環境中,很多時候都需要我們自己定制安裝AMP,編譯安裝LAMP有以下幾個優點 根據生產環境靈活定制程序 優化編譯參數,提高性能 解決不必要的軟件依賴 一、準備工作 卸載yum或rpm安…

    Linux干貨 2016-10-16
  • 系統管理之網絡管理

    今天給大家分享一些網絡方面的知識,,這塊的知識很重要哦,都是涉及網絡最底層的鏈路和協議,是我們學習大型服務的基礎,和前提.希望大家努力理解這方面的內容,今天的內容大概有這幾方面: 1.計算機網絡概念 2.計算機網絡體系結構 3.物理層 4.數據鏈路層 5.網絡層 6.IP地址及子網 7.傳輸層 8.應用層 計算機網絡概念 計算機網絡是個發展中的概念和技術,具…

    Linux干貨 2016-09-05
  • 馬哥教育網絡班21期+第3周課程練習

    1、列出當前系統上所有已經登錄的用戶的用戶名,注意:同一個用戶登錄多次,則只顯示一次即可。 #思路:使用who命令列出列出當明顯登錄的所有用戶,使用cut命令取出用戶名,使用uniq命令去重 [root@Centos6 ~]# who | cut -d" " -f1&n…

    Linux干貨 2016-07-07
  • linux高級文件系統管理

    磁盤配額:         (1)如果存放的文件空間不足,雖然分區后不能直接擴容,但是可以遷移,下面以/home目錄示例: 1、新建分區,同步分區表 /dev/sda62、mkfs.ext4 /dev/sda6             &n…

    Linux干貨 2017-03-14

評論列表(1條)

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

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

欧美性久久久久