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
下一篇 2016-11-07

相關推薦

  • Linux入門詳解(第一周)

    Linux入門 1. 描述計算機的組成及其功能 計算機硬件的五大組成部分為:運算器、控制器、存儲器、輸入設備和輸出設備; CPU:CPU是執行存儲在主存中指令的引擎;內部又分為算數邏輯單元和控制單元,其中算數邏輯單元主要負責程序的運算與邏輯判斷,控制單元則主要是協調各周邊組件與各單元間的工作;此外CPU內還包含寄存器(如PC)和高速緩存等; 存儲器:這里指主…

    Linux干貨 2016-08-29
  • 第四周作業

    Linux系統文件管理使用案例 1、 復制/etc/skel目錄為/home/tuser1,要求/home/tuser1及其內部文件的屬組和其它用戶均沒有任何訪問權限。 首先,利用cp命令將/etc/skel目錄復制為/home/tuser1: [root@localhost ~]# cp -r /etc/skel /home/tuser1 隨后通過chmo…

    Linux干貨 2018-03-24
  • lamp的搭建

    方法一編譯安裝amp:   1.系統環境:CentOS 6,7       CentOS6:apr,apr-util的版本為1.3.9,不適合httpd-2.4    CentOS7:apr,apr-util的版本為1.4+2.開發環境需要安裝:    Developm…

    Linux干貨 2016-10-16
  • 軟鏈接和硬鏈接的區別

    軟鏈接和硬鏈接的區別 什么是鏈接: 文件都是文件名和數據組成的,在linux中被分成兩部分:數據和元數據。數據是記錄文件的真實內容的地方;元數據是記錄文件屬性的地方:創建者、大小、創建時間等信息。元數據中的inode號這是唯一標識文件身份的屬性。在linux中,文件的inode號可以通過ls –i命令查看。在linux中為了解決文件共享使用,引入了兩種鏈接:…

    Linux干貨 2016-10-20
  • Linux運維之磁盤管理

    ※磁盤管理 計算機是由五大組成部件:輸入設備,輸出設備,存儲器,運算器,控制器,其中輸入設備我們稱之為I/O設備,如鍵盤,掃描器,運算器和控制稱之為cpu,存儲器如,內存,硬盤,優盤。計算機其實只需要內存和cpu其實已經可以完成工作了,但是內存屬于隨機存儲設備,斷電之后就丟失數據,所以我們就需要通過其他的輔助存儲設備來彌補內存的不足,這些輔存我們稱之為外存。…

    Linux干貨 2016-08-27
  • shell腳本作業

    1、編寫腳本/root/bin/systeminfo.sh,顯示當前主機系統信息,包括主機名, IPv4地址,操作系統版本,內核版本,CPU型號,內存大小,硬盤大小。 腳本代碼 #!/bin/bash #author:wzc         echo Hostname:…

    Linux干貨 2016-08-15

評論列表(1條)

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

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

欧美性久久久久