linux命令查找locate find要點

       在文件系統上查找符合的文件

       locate, find

locate:

         依賴于事先構建好的索引庫:

                 系統自動實現:(周期性任務)

                  手動更新數據庫(updatedb);

         工作特性:

                 查找速度快;

                  模糊查找;

                  非實時查找:

locate:  [OPTION] ….PATTERN…

           -b:只匹配路徑中的基名;

           -c:統計出共有多少個符號條件的文件

           -r:BRE

find:

      實時查找工具,通過遍歷指定起始路徑下文件系統層級結構完成文件查找

工作特性:

        查找速度略慢;

        精確查找:

        實例查找;

         實時查找;

用法:

         find[OPTION].[查找起始路徑]  [條件查找] [處理動作]

                查找起始路徑:指定具體搜索目標起始路徑;默認當前目錄;

                 查找條件:指定查找標準,可以根據文件名,大小,類型,從屬關系,權限等等標準進行,默認找出指定路徑下的所有文件;

                處理動作:對符合查找條件的文件做出的操作,例如刪除等動作,默認為輸出值標準輸出;

          -表達式:選項和測試

            測試:結果通常為布爾型(”true""false")

                       根據文件名查找

                              -name "pattern"

                               -name" pattern"

                                      支持glob風格的通配符

                                  -regex pattern:基于正則表達式模式查找文件,匹配是個路徑,而非其名:

                根據文件從屬關系查找:

            -user USERNAME         

           -group  GRPNAME: 查找屬組指定組的所有文件;

            -uid UID:查找屬主指定UID的所有文件;

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

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

                   根據文件的類型查找:

                            -type TYPE:

                                   f:普通文件

                                   d:目錄文件

                                   l:符號鏈接文件

                                   b:塊設備文件

                                   c:字符設備文件

                                   t:管道文件

                                   s :套接字符

               組合測試:

                    與:-a, 默認組合邏輯;

                      或:-o: 

                      非:-not, !

練習:

1、找出/tmp目錄下屬主為非root的所有文件;

2、找出/tmp目錄下文件名中不包含fstab字符串的文件;

3、找出/tmp目錄下屬主為非root,而且文件名字不包含fstab字符串的文件;

      !A -a !B=!(A -o B)

       !A -o !B=!(A -a B)

                 根據文件大小查找:

                  -size [+|-]#UNIT

                          常用單位:K,M,G

                   #UNIT: (#-1,#)

                   -#UNIT: 

                   +#UNIT:(#  ,00)

                    根據時間戳查找:

                          以天為單位:

                        -atime[+|-]#  訪問時間

                                      #:過去第幾天訪問的文件(#,#-1]

                                     -#:(0,#]

                                     +#:(00,#-1]

                        -mtime          修改時間

                        -ctime           改變時間

                       以分鐘為單位:

                          -amin

                           -mmin

                           -cmmin

根據權限查找

         -perm [/|-]mode

                  mode:精確權限匹配

                  /mode:任何一類用戶(u,g,o)的權限中的任何一位(r,w,x)符合條件滿足

                  9位之間存在“或”關系

                  -mode: 每一類(u,g.o)的權限中的每一位(r,w,x)同時符合條件即滿足;        9為權限之間存在“與”關系

      處理動作:

            -print: 輸出至標準輸出;默認的動作;

            -ls; 類似于對查找到的文件執行“ls-l",輸出文件的纖細信息;

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

            -fls /PATH/TO/SOMEFILE:把查找到的所有文件的長格式信息保存至指定的文件中:

            -ok COMMAND {}\; :對查找的每個文件執行有COMMAND表示的命令

            -exec COMMAND {} \;對查找的每個文件執行有COMMAND表示的命令;

          注意:find傳遞查找到的文件路徑至后面的命令時,是先查找出所有符合條件的文件路徑,并以次性傳遞給后面的命令;但是有些命令不能接受過長參數,此時命令執行會失??;另外一種發那個是可規避此問題;

       課外作業:學習xargs 命令的學法;

練習:

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

          ~]# find /var -user root -a -group mall -ls

        2、查找/usr目錄下不屬于root,bin 或hadoop的所有文件或目錄;用兩種方法;

            ~]# find /usr -not -user root -a not -user bin -a -not -user hadoop

            ~]# find /usr -not \( -user root -o -user bin -o -user hadoop \) -ls

       3、查找當前/etc目錄下最近一周內其內容修改過,卻屬主不是root用戶也不是hadoop用戶的文件或目錄; 

              ~]# find /etc -mtime -7 -a -not \(-user root -o -user hadoop \) -ls

        ~]# find /etc -mtime -7 -a -not -user root -a -not -user hadoop -ls

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

    ~]# find / \( -nouser -o -nogroup \) -atime -7 -ls

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

        ~]# find /etc -seze +1M -type f -exec ls -lh {} \;

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

       ~]# find /etc -not -perm -222 -ls

        ~]# find /etc -perm /222 -ls文件查找

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

       ~]# find /etc -not -perm -111 -type f -ls

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

         ~]# find /etc -perm -113 -type f -ls

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

(0)
shadowshadow
上一篇 2016-11-07 00:09
下一篇 2016-11-07 09:40

相關推薦

  • RAID and LVM

    RAID          Redundant Arrays of  inexpensive(Independent)Disks,RAID:容錯式廉價磁盤陣列,容錯式獨立磁盤陣列,簡稱RAID,由加利福尼亞大學伯克利分校(University of California-Berkeley)在1988…

    Linux干貨 2016-09-02
  • bash的工作特性-命令執行狀態返回值、命令行展開

    bash的基礎特性:命令的執行狀態結果 命令執行的狀態結果:      bash通過狀態返回值來輸出此結果:           成功:0           失?。?-255 命令執行完成之后,其狀態返回值會保存于bash的特殊…

    Linux干貨 2016-08-22
  • LVM邏輯卷管理

    本次內容         1、什么是LVM         2、為什么使用LVM         3、LVM的操作命令 …

    Linux干貨 2016-09-02
  • Shell腳本編程

    shell腳本編程 Bash為用戶提供了編程環境 相對于計算機而言,只能識別二進制文件,因此其所運行的其實是二進制指令,而這些二進制指令我們稱之為機器語言,屬于低級語言;程序員編程所使用的語言為高級語言,是人們比較容易理解的語言;因此,程序的執行過程:先把源碼程序翻譯成機器語言(生成可執行的文件),然后解釋執行。程序( 程序=指令+數據 )的編程風格有兩種:…

    2017-04-14
  • CentOS的軟件包的管理之rpm和yum

    在linux上,一個軟件包通常由二進制程序,庫文件,配置文件和幫助文件組成。 其中: 二進制程序一般都放在/bin,/sbin,/usr/bin,/usr/sbin,/usr/local/bin和/usr/local/sbin這幾個目錄下邊; 庫文件都放在/lib,/lib64,/usr/lib,/usr/lib64,/usr/local/lib和/usr/…

    Linux干貨 2017-04-23
  • awk

    awk是一種編程語言,用于在linux/unix下對文本和數據進行處理。數據可以來自標準輸入(stdin)、一個或多個文件,或其它命令的輸出。它支持用戶自定義函數和動態正則表達式等先進功能,是linux/unix下的一個強大編程工具。它在命令行中使用,但更多是作為腳本來使用。awk有很多內建的功能,比如數組、函數等,這是它和C語言的相同之處,靈活性是awk最大的優勢。

    Linux干貨 2018-01-02

評論列表(1條)

  • 馬哥教育
    馬哥教育 2016-11-10 20:01

    內容總結的詳細~~排版上能注意下會更好~加油~

欧美性久久久久