linux上的文件查找工具:locate和find

一、非實時超找工具 locate

    1、locate是查詢系統上預建的文件索引數據庫/var/lib/mlocate/mlocate.db文件索引實在系統比較空閑的時候自動進行的,是系統的周期性任務,因為是周期性任務,所以有些短期的數據無法更新到數據庫,如果需要馬上應用,乣管理員手動更新數據庫,用命令updatedb來執行。同時索引的構建過程是遍歷整個根文件系統,所以非常消耗系統資源,最好是在系統空閑時間進行更新。

    2、locate超找的特點:

    (1)查找速度快。因為是查找預先建立起來的索引數據庫,不需要查找整個文件系統,所以速度快速

    (2)模糊超找

    (3)非實時超找

    (4)搜索的文件是全路徑,不僅僅是文件名

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

    3、locate命令的用法

    locate [OPTION] KEYWORD

    常用選項

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

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

    -r    支持正則表達式

二、實時超找工具find

   1、find是實時超找工具,查找時通過遍歷指定路徑完成文件的超找

   2、工作特點

    (1)查找速度略慢

    (2)能夠時間精確查找

    (3)實時查找

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

   3、語法

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

  [查找路徑]:

    可以使用-path選項,來使用通配符匹配路徑

    指定具體目標路徑,默認為當前工作目錄,  .指定當前工作目錄, ..指定父目錄

  [查找條件]:

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

  [處理動作]:

    對符合條件的文件做操作,默認輸出值屏幕

   4、查找條件

(1)根據文件名、inode查找和正則表達式查找

    -name “文件名稱”,支持使用glob(通配符)* ? [] [^]等。-name總是用給定的文件名進行匹配,

-path則將文件路徑作為一個整體進行匹配,例如

32.png

    -name "文件名稱",不區分字母大小寫

    -inum n      按inode號碼超找

    -samefile name   相同inode號碼超找

    -links n       鏈接數為n的文件

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

(2)根據屬主、屬組查找

-user USERNAME

    查找屬主為指定用戶(UID)的文件

-group GRPNAME 

    查找屬組為指定組(GID)的文件

-uid UserID

    查找屬主為指定的UID號的文件

-gid GroupID

    查找屬組為指定的GID號的文件

-nouser

    查找沒有屬主的文件

-nogroup    

    查找沒有屬組的文件

(3)根據文件類型查找

-type TYPE

    f:普通文件

    d:目錄文件

    l:符號鏈接文件

    s:套接字文件

    b:塊設備文件

    c:字符設備文件

    p:管道文件

(4)根據文件大小來查找

-size [文件大小]

常用單位:k,m,G

其中文件大小分為三種情況,可以將[0,+∞)的數軸分為三段,假設a正整數數字,可以將數軸分為三段,[0,a-1]、(a-1,a]、(a,+∞),在搜索時第一段可以用 -a 表示,第二段用 a 表示,第三段用 +a 表示

(5)根據時間戳來查找

    以天為單位

  -atime [時間段] 

  -mtime [時間段]

  -ctime [時間段] 

 其中時間段的劃分與根據文件大小的劃分相同

以分鐘為單位

  -amin   -mmin   -cmin 


(6)根據權限查找

   -perm [/|-]MODE

   MODE:精確權限匹配

   /MODE:任何一類(u、g、o)對象的權限中只能以為匹配即可,是或的關系

   -MODE:每一類對象都必須同時又有指定權限,與關系0表示不關注

(7)處理動作

-print

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

-ls

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

-delete

    刪除查找到的文件

-fls file

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

-ok COMMAND {}\

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

(8)基于目錄深度的查找 -maxdepth和-mindepth

    find命令在使用時會遍歷所有的子目錄,我們可以使用-maxdepth和-mindepth選項來限制find命令遍歷目錄的深度。

    大多數情況下,我們只需要在當前目錄下進行查找,無需繼續往下查找。對于這用情況,我們使用深度選項來限制find命令向下查找的深度。如果只允許find在當前目錄中查找,深度可以設置為1;當需要向下兩級是,深度設置為2;其他情況以此類推。

    可以用-maxdepth指定最大深度,使用-mindepth指定最小深度

PS:-maxdepth和-mindepth應該作為find的第三個參數出項。如果作為第四個參數或者之后的參數,就可能影響find的效率,因為它不得不進行一些不必要的檢查。例如,如果-maxdepth作為第四個參數,-type作為第三個參數,find首先會找出符合-type的所有文件,然后在所有匹配的文件中再找出符合指定深度的那些。但是如果倒過來,目錄深度作為第三個參數,-type作為第四個參數,那么find就能夠在找到的所有符合指定深度的文件后,再檢查這些文件類型,這才是最有效的搜索之道



  

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

(0)
black_fishblack_fish
上一篇 2016-08-16
下一篇 2016-08-16

相關推薦

  • grep正則表達式

    grep:這是一個搜索命令,搜文本并且將文本行顯示出來 (1)grep -i 表示搜索的時候忽略大小寫 (2)grep –colour 表示搜索關鍵字帶顏色 例如:grep –colour ‘root’ /etc/passwd 顯示為在etc的passwd里的 root 選項有顏色 *為了方便我們可以定義個別名,讓他搜索的時候默認顯示為帶顏色 alias…

    Linux干貨 2017-07-29
  • N25期–第十周作業

    1、請詳細描述CentOS系統的啟動流程(詳細到每個過程系統做了哪些事情) 啟動過程 (PC架構)    POST –> Boot Sequence(BIOS) –> Boot Loader (MBR)–>GRUB—> Kernel(ramdisk) –> ro…

    Linux干貨 2017-03-13
  • M20 – 1- 第三周博客(3):Linux上文本處理三劍客grep

    Grep是一種強大的文本搜索工具,它能使用正則表達式搜索文本,并把匹配的行打印出來。 1、作用 Linux系統中grep命令是一種強大的文本搜索工具,它能使用正則表達式搜索文本,并把匹 配的行打印出來。grep全稱是Global Regular Expression Print,表示全局正則表達式版本,它的使用 權限是…

    Linux干貨 2016-08-08
  • 文本處理工具

    文本處理工具 文件查看命令:cat  cat [OPTION]… [FILE]…  -E: 顯示行結束符$  -n: 對顯示出的每一行進行編號  -A:顯示所有控制符  -b:非空行編號  -s:壓縮連續的空行成一行 [root@centous1 soft]#&nb…

    Linux干貨 2016-08-08
  • Linux基礎-第三周

    1、列出當前系統上所有已經登錄的用戶的用戶名,注意:同一個用戶登錄多次,則只顯示一次即可。 2、取出最后登錄到當前系統的用戶的相關信息。 3、取出當前系統上被用戶當作其默認shell的最多的那個shell。 4、將/etc/passwd中的第三個字段數值最大的后10個用戶的信息全部改為大寫后保存至/tmp/maxusers.txt文件中。 5、取出當前主機的…

    2018-03-19
  • LVM詳解

    一、概述     LVM全稱為Logical Volume Manager,即邏輯卷管理器。LVM可以彈性的調整文件系統的容量,可以將多個物理分區整合在一起,并且根據需要劃分空間或動態的修改文件系統空間。     LVM有兩個版本: lvm,lvm2 二、LVM的相關概念   &…

    Linux干貨 2015-04-28
欧美性久久久久