文本查找之find組合拳

find命令不僅能幫助我們在數目眾多的文件中快速找到滿足條件的文本,我們還能通過find處理動作對查找到的文件進行進一步的處理。

一、find的特點:

              遍歷查找,因此查找速度略慢

              精確查找

              實時查找

二、find用法:

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

查找路徑:指定具體目標路徑;默認為當前目錄

查找條件:指定的查找標準,可以文件名、大小、類型、權限等標準進行

處理動作:對符合條件的文件做操作,默認輸出至屏幕

       三、find查找條件:

1、根據文件名查找:

                     -name “文件名”: 文件支持glob通配符

                     -iname “文件名”: 查找時忽略文件名大小寫

                     -inum  “文件inode號”: 根據文件inode號碼查找

                     -links “鏈接數” :查找具有指定連接數的文件

                     -regex “pattern” :查找匹配”pattern”的文件,支持正則表達式

例(1)、查找當前目錄下以sum開頭的文件

blob.png

              2、根據屬主、屬組查找

                     -user username : 查找屬主為指定用戶的文件

                     -uid userid: 查找uid為指定id的文件

                     -group groupname: 查找屬組為指定組的文件

                     -gid groupid: 查找gid為指定gid的文件

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

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

例(2)、查找系統中屬主為hadoop的文件

blob.png

              3、根據文件類型查找:

                     -type filetype:

                          f:  普通文件

d:  目錄文件

l:  符號鏈接文件

s : 套接字文件

b:  塊設備文件

c:  字符設備文件

p:  管道文件

例(3)、 查找/etc/目錄下的連接文件

blob.png

             4、組合條件:如果要查找滿足不止一個特定條件的文件,就需要將這些條件組合起來。條件的組合有以下形式:

                  與:-a

或:-o

非:-not, !

              同時,組合條件遵循德摩根定律:

                     (非A) 且 (非B ) = 非(A 或 B)  !A -a !B = !(A -o B)

                     (非A) 或 (非B ) = 非(A 且 B)  !A -o !B = !(A -a B)

   例(4)、找出/tmp 目錄下,屬主不是root ,文件名不是以p開頭的文件 ,用德摩根定律實現兩種查找方式。

第一種:

blob.png

第二種:

 blob.png

5、根據文件大小來查找

                     -size  [+|-]nunit:

                            常用的單位有k、M、G

                     -size 6k: 查找的文件大小等于6k的文件,它的范圍為(5K, 6k]

                     -size -6k:查找文件大小小于6k的文件,它的范圍為[0,5k]

                     -size +6K:查找文件大小大于6k的文件,它的范圍為(6,∞),不包含6k。

blob.png

6、根據時間戳查找

              以“天”為單位;

-atime  [+|-]n,

n: [n,n+1):比如查找第7天被訪問過的文件,-atime 7查找范圍為[7,8)

+n: [n+1, ∞ ]:查找7天前被訪問過的文件,-atime +7查找范圍為[8, ∞)

-n: [0,n):查找7天之內被訪問過的文件,-atime -7查找范圍為[0,7),0表示現在

-mtime

-ctime

以“分鐘”為單位:

-amin

-mmin

-cmin

blob.png

7、根據權限查找

              -perm [/|-]mode:

                     mode  :  精確權限匹配

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

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

                     0表示不關注

       例:匹配所有用戶只要寫權限的文件,find  -perm  222

              匹配任何一類用戶有寫權限的文件,find  -perm  +222

              匹配所有用戶都要寫權限的文件,find  -perm  -222

              匹配其他用戶有寫權限的文件,find  -perm  -002

    四、處理動作

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

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

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

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

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

           -exec  COMMAND  {}  \;  對查找到的每個文件執行由COMMAND指定的命令

              {}:  用于引用查找到的文件名稱自身

注:find 傳遞查找到的文件至后面指定的命令時,查找到所有符合條件的文件一次性傳遞給后面的命令。

    有些命令不能接受過多參數,此時命令執行可能會失敗,下面方式可規避此問題

find  |  xargs  COMMAND

五、示例

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

find /var -user root -a -group mail

blob.png

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

find /var ! \( -user root -o -user lp -o -user gdm \) -ls

blob.png

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

find /var -mtime -7 -a ! \( -user root -o -user postfix \) | xargs  stat

blob.png

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

find / \( -nouser -o -nogroup \) -a -atime -7 -ls

blob.png

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

find /etc/ -size +1M  -ls

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

find /etc ! -perm +222 -ls

blob.png

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

find /etc/ ! -perm -111 -ls

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

find /etc/init.d/ -perm -111 -a -perm -002

原創文章,作者:M20-1鐘明波,如若轉載,請注明出處:http://www.www58058.com/36091

(0)
M20-1鐘明波M20-1鐘明波
上一篇 2016-08-15 16:55
下一篇 2016-08-15 23:35

相關推薦

  • 第六周課程作業

    1、復制/etc/rc.d/init.d/functions文件至/tmp目錄,將/tmp/functions文件中 的以至少一個空白字符開頭的行的行首加# ~]# cp /etc/rc.d/init.d/functions /tmp~]# vim /tmp/functions %s@^[[:space:]]\+@#@g 2、復制/boot/gru…

    Linux干貨 2016-12-12
  • LVS+Keepalived實現負載均衡

    keepalived工作原理 keepalived是基于VRRP協議實現的保證集群高可用的一個服務軟件,主要功能是實現后端真實服務器的故障隔離和負載均衡器間的失敗切換,防止單點故障。 VRRP協議全稱:虛擬路由冗余協議(Virtual Route Redundancy Protocol)。 keepalived安裝 # yum install keepali…

    2017-11-26
  • Centos啟動過程

    啟動第一步--加載BIOS 當你打開計算機電源,計算機會首先加載BIOS信息,BIOS信息是如此的重要,以至于計算機必須在最開始就找到它。這是因為BIOS中包含了CPU的相關信息、設備啟動順序信息、硬盤信息、內存信息、時鐘信息、PnP特性等等。在此之后,計算機心里就有譜了,知道應該去讀取哪個硬件設備了。 啟動第二步--讀取MBR 眾所周知,硬盤上第0磁道第一…

    Linux干貨 2017-03-30
  • CentOS系統啟動流程–上

    centos6啟動流程 1.加載BIOS的硬件信息,獲取第一個啟動設備。 2.讀取第一個啟動設備MBR的引導加載程序(grub)的啟動信息 3.加載核心操作系統的核心信息,核心開始解壓縮,并嘗試驅 動所有的硬件設備。 4.核型執行init程序并獲取運行信息。 5.Init執行/etc/rc.d/rc.sysinit文件。 6.啟動核心的外掛模塊(/etc/m…

    Linux干貨 2016-09-13
  • ansible原理及簡單應用

    一、基礎介紹 1、簡介 ansible是新出現的自動化運維工具,基于python開發,集合了眾多運維工具(puppet、cfengine、chef、func、fabric)的優點,實現了批量系統配置、批量程序部署、批量運行命令等功能。ansible是基于模塊工作的,本身沒有批量部署的能力。真正具有批量部署的是ansible所運行的模塊,ansible只是提供…

    Linux干貨 2016-01-13
  • 數組,字符串處理,mktemp命令,install命令,bash的環境配置文件,程序包編譯

    數組 變量:存儲單個元素的內存空間 數組:存儲多個元素的連續的內存空間,相當于多個變量的集合。 數組名和索引 索引:編號從0開始,屬于數值索引 注意:索引可支持使用自定義的格式,而不僅是數值格式,即為關聯索引,bash4.0版本之后開始支持。 bash的數組支持稀疏格式(索引不連續) 聲明數組: declare -a ARRAY_NAME(普通數組可以不加聲…

    Linux干貨 2016-08-24

評論列表(2條)

  • 馬哥教育
    馬哥教育 2016-08-19 14:26

    find命令是筆試中常見的考點,同時find的處理動作也是很重要的,希望課后能多加練習,熟練掌握。

欧美性久久久久