文件查找find和locate

        在Linux這個一切皆文件的系統中怎么能快速和精確的查找到文件,是我們必不可少的技能。而文件查找的命令可以讓我們在很短的時間內在文件系統中找到我們要查找的文件。這就是我們要掌握的,因此我來介紹一下文件查找的這兩個命令locate和find。

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

文件查找:locate, find

    非實時查找( 數據庫查找) :locate

    實時查找:find

locate命令

查詢系統上預建的文件索引數據庫 :/var/lib/mlocate/mlocate.db

依賴于事先構建的索引;

        索引的構建是在系統較為空閑時自動進行( 周期性任務) ;管理員手動更新數據庫(updatedb); ;索引構建過程需要遍歷整個根文件系統,極消耗資源;

工作特點:

    查找速度快;

    模糊查找;

    非實時查找;

    搜索的是文件的全路徑,不僅僅是文件名可能只搜索用戶具備讀取和執行權限的目錄。

locate 命令語法

locate KEYWORD

locate passwd:搜索名稱或路徑中帶有“passwd ”的文件

lockate.PNG

有用的選項

    -i 執行區分大小寫的搜索

locate -i.PNG

    -n X 只列舉前X 個匹配項目

locate -n.PNG

find命令

實時查找工具,通過遍歷指定路徑完成文件查找;

工作特點:

    查找速度略慢

    精確查找

    實時查找

    可能只搜索用戶具備讀取和執行權限的目錄

find命令語法:

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

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

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

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

查找條件

根據文件名和inode 查找:

    -name " 文件名稱" :支持使用glob

        *, ?, [], [^]

    -iname " 文件名稱" :不區分字母大小寫

    -inum n 按inode 號查找

    -samefile name 相同inode 號的文件

    -links n 鏈接數為n 的文件

    -regex "PATTERN" :以PATTERN 匹配整個文件路徑字符串,而不僅僅是文件名稱

文件查找find和locate

文件查找find和locate

根據屬主、屬組查找:

    -user USERNAME :查找屬主為指定用戶(UID) 的文件

    -group GRPNAME:  查找屬組為指定組(GID) 的文件

    -uid UserID :查找屬主為指定的UID 號的文件

    -gid GroupID :查找屬組為指定的GID 號的文件

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

    find -nouser.PNG

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

find -nogroup.PNG

根據文件類型查找:

    -type TYPE:

    f:  普通文件

    d:  目錄文件

find -type d.PNG

    l:  符號鏈接文件

    s :套接字文件

    b:  塊設備文件

find -type b.PNG

    c:  字符設備文件

    p:  管道文件

根據文件大小來查找:

-size [+|-]#UNIT

常用單位:k, M, G

#UNIT: (#-1, #] ,如:6k

-#UNIT :[0,#-1],  如:-6k

+#UNIT :(#, ∞ ), 如:+6k

find.PNG

6k  :是5k – 6k 之間,不包含5k,但包含6k。

-6k   :是0k – 5k 之間,不僅包含0k, 也包含5k。

+6k?。菏?k-正無窮之間,不包含6k。

find -size.PNG

根據時間戳:

以“天”為單位;

find -mtime.PNG

以“分鐘”為單位:

    -amin

    -mmin

    -cmin

find -amin.PNG

根據權限查找:

-perm [/|-]MODE

MODE:  精確權限匹配

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

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

    0  表示不關注

find -perm 755 會匹配權限模式恰好是755 的文件

只要當任意人有寫權限時,find -perm /222 就會匹配

只有當每個人都有寫權限時,find -perm -222 才會匹配

只有當其它人(other )有寫權限時,find -perm -002才會匹配

find -perm.PNG

組合條件:

    與:-a

    或:-o

    非:-not, !

find -o.PNG

find -not.PNG

    德· 摩根 定律:

        非(P 且 Q) = (非 P) 或 (非 Q)

        非(P 或 Q) = (非 P) 且 (非 Q)

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

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

德摩根.PNG

德.摩根定律.PNG

P=1+3 , Q=2+3 , P 且 Q=3 , P 或 Q=1+2+3

非(P 且 Q) = (非 P) 或 (非 Q)

    非(P 且 Q):非(1+3 且 2+3)=(2+4 或 1+4)= 1+2+4

    (非P)或(非Q): (非 1+3)或(非2+3)=(2+4)或(1+4)= 1+2+4

    (可以看出除了3其他都是)

非(P 或 Q) = (非 P) 且 (非 Q)
    非(P 或 Q):非(1+3 或 2+3)=(2+4 且 1+4)= 4

    (非P)且(非Q) :(非 1+3)且(非 2+3)=(2+4)且(1+4)=4

    (可以看出除了4其他都不是)

排除目錄

find /etc -path ‘/etc/sane.d’ -a -prune -o -name *.conf -print

文件查找find和locate

find 排除目錄.PNG

處理動作

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

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

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

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

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

對于每個文件執行命令之前,都會交互式要求用戶確認

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

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

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

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

find | xargs COMMAND

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

(0)
AN0519AN0519
上一篇 2016-08-24
下一篇 2016-08-24

相關推薦

  • Linux文件類型

    Linux文件類型常見的有:普通文件、目錄文件、字符設備文件和塊設備文件、符號鏈接文件等。 1、普通文件,顏色為白色 純文本檔 二進制文件 數據格式文件 2、目錄文件,顏色為藍色 當我們在某個目錄下執行,看到有類似 drwxr-xr-x ,這樣的文件就是目錄,目錄在Linux是一個比較特殊的文件。首字符是【d】字母。 3、字符設備和塊設備…

    Linux干貨 2016-10-16
  • keepalived+lvs-dr實現高可用負載均衡

    keepalived+lvs-dr實現高可用負載均衡 實驗拓撲 實驗要求 RS1與RS2地址為172.18.27.201/202 VS1和VS2地址為172.18.27.103/200,VIP為172.18.27.254 VS1和VS2實現lvs-dr負載均衡及高可用性,且vs為sorry sever。 keepalived是單主模式。 實驗步驟 各個主機安…

    2017-05-14
  • N25-第六周博客作業

    請詳細總結vim編輯器的使用并完成以下練習題 1、復制/etc/rc.d/rc.sysinit文件至/tmp目錄,將/tmp/rc.sysinit文件中的以至少一個空白字符開頭的行的行首加#; [root@han ~]# cp /etc/rc.d/rc.sysinit /tmp [root@han ~]#&n…

    Linux干貨 2017-02-16
  • Linux自動備份腳本

    原創作品,允許轉載,轉載時請務必以超鏈接形式標明文章 原始出處 、作者信息和本聲明。否則將追究法律責任。http://nolinux.blog.51cto.com/4824967/1541163        今天網上一個朋友問了我一個shell的題目,讓我幫他做下。下面是題目以及解題思路。 題目:…

    Linux干貨 2016-08-15
  • 非對稱密鑰加密解密

    兩臺計算機一臺用公鑰加密
    另一臺解密

    2018-01-08
  • 從Linux小白到大牛——與狼共舞的日子12(上)

    馬哥教育網絡班21期+第12周課程練習 1、請描述一次完整的http請求處理過程; 1)建立或處理連接:客戶端發送http請求報文,服務器端接收或拒絕請求; 2)接收請求:服務器端接收來自客戶端對某些資源的請求; 3)處理請求:服務器端解析客戶端請求報文,獲取客戶端請求的資源及請求方法等信息; 4)訪問資源:服務器端獲取客戶端請求的資源; 5)構建響應報文;…

    Linux干貨 2016-12-26
欧美性久久久久