Linux文件查找之find秘笈

前言

    Linux的基本特點之一是一切皆文件,在系統管理過程中難免會需要查找特定類型的文件,那么問題來了:如何進行有效且準確的查找呢?本文將對Linux系統中的文件查找工具及用法進行詳細講解。

常用工具對比

    常用的文件查找工具主要有locate(非實時查找)和find(實時查找)。locate查找依賴于索引,而索引構建相當占用資源,索引的創建是在系統空閑時由系統自動進行(每天任務),手動進行創建則可使用updatedb命令,查找速度快但結果非精確,即為模糊查找。而find相對于locate而言,是遍歷所有文件進行條件匹配,查找速度慢但結果精確,即為精準查找。簡言之,對于實際生產環境,find(實時查找)無疑是最有效的文件查找工具。

find的用法

命令格式:

find [options] [查找路徑] [查找條件] [處理動作]
查找路徑:默認為當前目錄
查找條件:默認為指定路徑下的所有文件
處理動作:默認為顯示至屏幕

條件查找

-name "文件名稱":支持使用globbing字符
      *:任意長度任意字符
      ?:任意單個字符
      []:范圍內任意字符
      [^]:范圍外任意字符
-iname "文件名稱":查找時忽略字符大小寫
-user USERNAME: 根據文件的屬主查找
-group GRPNAME: 根據文件的屬組查找
-uid UID:根據用戶UID查找
-gid GID:根據用戶GID查找
-nouser: 查找沒有屬主的文件
-nogroup: 查找沒有屬組的文件

組合條件查找

-a:與,同時滿足
-o:或,滿足一個即可
-not:!非,條件取反

文件類型查找

-type TYPE:根據文件類型查找
      f:普通文件
      d:目錄文件
      l:符號鏈接
      b:塊設備
      c:字符設備
      s:套接字文件
      p:命名管道
-size [+|-]#UNIT:根據文件大小查找
      常用單位:k,M,G
      #UNIT:#-1<x<=#
      -#UNIT:x<=#-1
      +#UNIT:x>#
      (x為匹配到的文件大小)

時間戳查找

以“天”為單位
-atime(訪問時間) [+|-]#
       +#:x>=#+1
       -#:x<#
       #:#<=x<#+1
       (x為匹配到的文件時間) 
-mtime(修改時間)
-ctime(改變時間)
以“分鐘”為單位
-atime
-mtime
-ctime
(用法同上)

權限查找

-perm [+|-]MODE
      MODE:與MODE精確匹配
      +MODE: 任何一類用戶的權限只要能包含對其指定的任何一位權限即可
      -MODE:每類用戶指定的檢查權限都匹配


處理動作

-print: 默認處理動作,顯示
-ls:類似于ls -l
-exec COMMAND {} \;
-ok COMMAND {} \;
find一次性查找符合條件的所有文件,并一同傳遞給給-exec或-ok后面指定的命令,但有些命令不能接受過長的參數,此時使用另一種方式:
find | xargs COMMAND

find實戰

#查找/scripts/目錄中包含s以.sh結尾的文件并復制到/tmp目錄

Linux文件查找之find秘笈

#查找/var/目錄屬主為root且屬組為mail的所有文件

Linux文件查找之find秘笈

#查找/usr目錄下不屬于root、bin或scholar的所用文件

Linux文件查找之find秘笈

#查找/tmp/目錄下最近一周內其內容修改過的,且不屬于root且不屬于scholar的文件

Linux文件查找之find秘笈

#查找當前系統上沒有屬主或屬組,且最近1個月內曾被訪問過的文件

Linux文件查找之find秘笈

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

Linux文件查找之find秘笈

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

Linux文件查找之find秘笈

#查找/etc/目錄下至少有一類用戶沒有寫權限
#由于文件過多,已重定向

Linux文件查找之find秘笈

#查找/etc/rc.d/目錄下,所有用戶都有執行權限且其它用戶有寫權限的文件
#由于文件過多,已重定向

Linux文件查找之find秘笈

The end

    對于權限查找+222和-222的取反匹配,學習時錯誤的只對+222和-222取反,可懵了好一會才想明白。最后在啰嗦一句,切記:權限查找取反是對全局匹配取反,而不是只對權限取反?。?!


    以上只是學習總結,如有錯漏,大神勿噴~~~

本文出自 “北城書生” 博客,請務必保留此出處http://scholar.blog.51cto.com/9985645/1623450

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

(0)
書生書生
上一篇 2015-03-23
下一篇 2015-03-23

相關推薦

  • Redis 代理服務Twemproxy

    1、twemproxy explore       當我們有大量 Redis 或 Memcached 的時候,通常只能通過客戶端的一些數據分配算法(比如一致性哈希),來實現集群存儲的特性。雖然Redis 2.6版本已經發布Redis Cluster,但還不是很成熟適用正式生產環境。 Redis 的 Clust…

    Linux干貨 2015-04-04
  • Linux高級文件系統管理

                                          &n…

    系統運維 2016-09-06
  • Linux 網絡屬性管理

    在介紹Linux網路屬性管理之前,我還要介紹下以太網(Enternet) 以太網的工作原理 以太網才用帶沖突檢測的載波偵聽多路訪問(CSMA/CD)機制。以太網中節點都可以看到在網絡中發送的所有信息,因此,我們說以太網是一種廣播網絡。 以太網的工作過程如下: 當以太網中的一臺主機要傳輸數據時,它將按如下步驟進行: 1.監聽信道上是否有信號在傳輸。如果有的話,…

    Linux干貨 2016-03-20
  • NTP服務器搭建

        1、NTP(Network Time Protocol)         在計算機世界中,NTP(Network Time Protocol,網絡時間協議)被廣泛用于對時間的統一性和準確性要求非常高的場景,是用來使網絡中的各個計算機時間同步的一種協議?!?/p>

    Linux干貨 2015-11-18
  • 編譯安裝MariaDB源碼包

        因為MySQL的發展趨勢不甚樂觀,MariaDB已替代MySQL被CentOS 7做為默認組件,如果想在CentOS 6中使用最新的MariaDB,則需要我們手動安裝,其安裝方式有三種:     1、RPM包安裝     2、二進制…

    Linux干貨 2015-06-08
  • 搭建LAMP+NFS(附加mysql共享NFS目錄練習總結)

    練習一 環境布局: 主機6 route A (10.1.32.14)作為DNS服務器 主機centos 7 class (10.1.32.3)作為Apache,PHP(模塊方式)服務器1(有discuz程序) 主機centos 7 server (10.1.32.13)作為Apache,php(模塊方式)服務器2(無discuz) 主機centos 6 cl…

    系統運維 2016-10-25

評論列表(3條)

  • stanley
    stanley 2015-03-24 09:54

    幫你重新格式化了代碼段,進行了部分字體格式和大小調整,整體縮進段距,看起來要稍好些,加沒

    • 書生
      書生 2015-03-24 10:06

      @stanley3Q :mrgreen: :mrgreen: :mrgreen:

  • Linux_love
    Linux_love 2015-03-28 17:48

    mark

欧美性久久久久