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取反,可懵了好一會才想明白。最后在啰嗦一句,切記:權限查找取反是對全局匹配取反,而不是只對權限取反?。。?/span>


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

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

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

(0)
書生書生
上一篇 2015-03-23 15:59
下一篇 2015-03-23 20:57

相關推薦

  • 聊聊CentOS6的啟動過程

    前言:     作為一個合格的運維人員,系統的啟動過程我們需要牢記在心,此文不深入探討,只求大致理解CentOS6的啟動過程。 一張圖帶你了解CentOS6的啟動過程 注意:圖片放大查看效果更佳 上圖各階段詳解 POST:計算機開機時BIOS對其各硬件的簡單測試,測試各硬件的完整性 BootSqunce:加電自檢后根據…

    Linux干貨 2016-03-14
  • DNS服務器—-主從服務器搭建

    一、環境準備   1、準備三臺測試       主DNS服務器地址:192.168.10.203       從DNS服務器地址:192.168.10.103       測試主機地址:  192.168.10.120 …

    Linux干貨 2015-05-18
  • 關于shell腳本基礎編程第五篇

                  shellb編程基礎第五篇              本章內容:數組 變量:存儲單個元素的內存空間數組:存儲多個元素的連續的內存空間…

    系統運維 2016-08-24
  • Linux磁盤及文件系統管理

    磁盤(Hard Disk Drive,簡稱HDD)是一種存儲介質,傳統的機械硬盤由一個或多個鋁制或玻璃制的碟片組成,碟片外覆蓋有鐵磁性材料。 磁盤的物理結構一般由磁頭與碟片、電動機、主控芯片與排線等部件組成;當主電動機帶動碟片旋轉時,副電動機帶動一組(磁頭)到相對應的碟片上并確定讀取正面還是反面的碟面,磁頭懸浮在碟面上畫出一個與碟片同心的圓形軌道(磁軌或稱柱…

    Linux干貨 2015-04-20
  • linux 系統基礎(三)–用戶和組命令使用總結

    1、列出當前系統上所有已經登錄的用戶名,注意:同一個用戶登錄多次,則只顯示一次即可。 [root@node2 ~]# who   root     pts/0        2016-10-…

    Linux干貨 2016-10-08
  • linux下繪圖工具rrdtool

    一、前言       為了做云緩存平臺的技術儲備,從零開始學習了rrdtool,rrdtool非常強大,剛接觸會有摸不著邊的感覺,尤其是一堆概念性的東西。學習的切入點便是這些概念,一一理解后你才能品嘗到rrdtool的清香,首先要感謝ailms整理的“RRDtool簡體中文教程 v1.01”,通俗易…

    Linux干貨 2015-03-27

評論列表(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

欧美性久久久久