43.find文件查找命令詳解

locate命令,find命令:

            文件查找:

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

                                實現工具:locate,find 命令

locate命令:
依賴於事先構建好的索引庫;
系統自動實現(週期性任務);
手動更新數據庫(updatedb);

                    工作特性:
                                查找速度快;
                                模糊查找;
                                非實時查找;

                locate:

                            -b:只匹配路徑中的基名 
                         -c:統計出共有多少個符合條件的文件; 
                         -r:BRE 

                        注意:索引構建過程需要遍歷整個根文件系統,極消耗資源; 

        實例:
            [root@centos7 ~]# locate -c passwd
            151
            [root@centos7 ~]# locate -cb passwd
            147


find命令:

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

                     工作特性: 
                                    查找速度略慢; 
                                    精確查找; 
                                    實時查找; 

             用法:
                     find [OPTIONS] [查找起始路徑][查找條件][處理動作]

                             查找起始路徑:指定具體搜索目標起始路徑;默認爲當前目錄;
                             查找條件:指定的查找標準,可以根據文件名,大小,類型,從屬關係,權限等等標準進行;默認爲找出指定路徑下的所有文件;
                             處理動作:對符合查找條件的文件做出的操作,例如刪除等操作;默認爲輸出至標準輸出;

                             查找條件:
                                         表達式:選項和測試

                                         測試:

                                                     根據文件名查找:
                                                                 -name "pattern"
                                                                 -iname "pattern"
                                        實例:
                                                 [root@centos7 ~]# find /etc/ -name “passwd”
                                                    /etc/passwd
                                                /etc/pam.d/passwd

                                                [root@centos7 ~]# find /etc/ -name passwd*
                                                /etc/passwd
                                                /etc/pam.d/passwd
                                                /etc/passwd- 

                            支持globbing風格的通配符:

                                        匹配模式:元字符
                                                * :匹配任意長度的任意字符
                                                         Pa* ,  *pa* , *pa , *p*a*
                                                ? :匹配任意單個字符
                                                                Pa?
                                                [] :匹配指定範圍內的任意單個字符
                                                                        有幾種特殊格式:
                                                                        [a-z],[A-Z],[0-9],[a-z0-9]
                                                                        [[:upper:]] :所有大寫字母
                                                                        [[:lower:]]:所有小寫字母
                                                                        [[:alpha:]]:所有字母
                                                                        [[:digit:]]:所有數字
                                                                        [[:alnum:]]:所有數字和字母
                                                                        [[:space:]]:所有空白字符
                                                                        [[:punct:]]:所有標點符號
                                                                        [^]: 匹配指定範圍外的任意單個字符
                                                                        [^[:upper:]]
                                                                        [^0-9]
                                                                        [^[:alnum:]]

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

                         根據文件從屬關係查找:
                                                     -user USERNAME:查找屬主指定用戶的所有文件;
                                                     -group GRPNAME:查找屬組指定組的所有文件;

實例:

[root@centos7 ~]# find /home/ -user centos
/home/centos
/home/centos/.mozilla
/home/centos/.mozilla/extensions
/home/centos/.mozilla/plugins
/home/centos/.bash_logout
/home/centos/.bash_profile
/home/centos/.bashrc
/home/centos/.cache
/home/centos/.cache/gdm

實例:
查找/tmp目錄下所有屬主爲moosefs的文件;
43.find文件查找命令詳解

查找/tmp目錄下所有屬組爲moosefs的文件;
43.find文件查找命令詳解


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

根據uid進行查找
43.find文件查找命令詳解

43.find文件查找命令詳解


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

查找沒有屬主的文件 ,沒有屬組的文件;

43.find文件查找命令詳解


根據文件的類型查找:

                            -type TYPE:

                                f:普通文件
                                d:目錄文件
                                l:符號鏈接文件
                                b:塊設備文件
                                c:字符設備文件
                                p:管道文件
                                s:套接字文件

實例:

43.find文件查找命令詳解

43.find文件查找命令詳解

[root@centos7 ~]# find /etc/ -type l -ls

43.find文件查找命令詳解


組合測試:
與:-a :
或:-o :
非:-not, !

運算數:真 或 假

                    與:只有兩個都爲真,結果才爲真,否則爲假;
                1&&1=1
                1&&0=0
                 0&&1=0
                0&&0=0
        或:只要一個爲真,結果才爲真,否則爲假;
                1||1=1
                1||0=1
                0||1=1
                0||0=0
         非:非真即假
               !1=0
               !0=1

43.find文件查找命令詳解


根據文件的大小查找:

find . -type f -size 文件大小單元
文件大小單元:
b —— 塊(512字節)
c —— 字節
w —— 字(2字節)
k —— 千字節
M —— 兆字節
G —— 吉字節

實例:

        搜索大於10KB的文件
        find . -type f -size +10k

        搜索小於10KB的文件
        find . -type f -size -10k

        搜索等於10KB的文件
        find . -type f -size 10k

刪除匹配文件

刪除當前目錄下所有.txt文件
find . -type f -name "*.txt" -delete


根據文件時間戳進行查找:

        find . -type f 時間戳

UNIX/Linux文件系統每個文件都有三種時間戳:
訪問時間(-atime/天,-amin/分鐘):用戶最近一次訪問時間。
修改時間(-mtime/天,-mmin/分鐘):文件最後一次修改時間。
變化時間(-ctime/天,-cmin/分鐘):文件數據元(例如權限等)最後一次修改時間。
搜索最近七天內被訪問過的所有文件

以“分鐘”爲單位:

        -amin
        -mmin
        -cmin

實例:

                    搜索最近七天內被訪問過的所有文件
                    find . -type f -atime -7

                    搜索恰好在七天前被訪問過的所有文件
                    find . -type f -atime 7

                    搜索超過七天內被訪問過的所有文件
                    find . -type f -atime +7

                    搜索訪問時間超過10分鐘的所有文件
                    find . -type f -amin +10

                    找出比file.log修改時間更長的所有文件
                    find . -type f -newer file.log


根據權限查找:

   -perm
   -perm [/|-]mode
   mode:精確權限匹配;
/mode:任何一類用戶(u,g,o)的權限中的任何一位(r,w,x)符合條件即滿足;9位權限之間存在“或”關係;
-mode:每一類用戶(u,g,o)的權限中的每一位(r,w,x)同時符合條件即滿足。9位權限之間存在“與”關係;


實例:

43.find文件查找命令詳解

43.find文件查找命令詳解

43.find文件查找命令詳解

43.find文件查找命令詳解



處理動作:

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

  -ls:類似於對查找到的文件執行“ls -l”命令,輸出文件的詳細信息;
  
-delete:刪除查找到的文件;
  -fls /PATH/TO/SOMEFILE:把查找到的所有文件的長格式信息保存至指定文件中;
  -ok COMMAND {} \; :對查找到的每個文件執行由COMMAND表示的命令;每次操作都由用戶進行確認;
  -exec COMMAND {} \; :對查找到的每個文件執行由COMMAND表示的命令;

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

                                find | xargs COMMAND

                    xargs命令用法:

實例:

43.find文件查找命令詳解

43.find文件查找命令詳解

https://www.cnblogs.com/scrit/p/5854197.html
https://blog.csdn.net/u013961718/article/details/51449446

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章