0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Linux文件查找神器對決:Locate與find選誰

馬哥Linux運(yùn)維 ? 來源:馬哥Linux運(yùn)維 ? 2024-12-18 14:00 ? 次閱讀

linux 中有很多查找工具,今天主要講解locate,find兩個工具。

一、locate

1、性能介紹

查詢系統(tǒng)上預(yù)建的文件索引數(shù)據(jù)庫

/var/lib/mlocate/mlocate.db

注意:如果這個文件刪除了,locate就無法使用了。需手動手動更新數(shù)據(jù)庫(updatedb),或重啟系統(tǒng),locate才能恢復(fù)作用

依賴于事先構(gòu)建的索引:

索引的構(gòu)建是在系統(tǒng)較為空閑時自動進(jìn)行(周期性任務(wù)/etc/cron.daily), 管理員手動更新數(shù)據(jù)庫(updatedb)

索引構(gòu)建過程需要遍歷整個根文件系統(tǒng),極消耗資源

5f235992-bae0-11ef-8732-92fbcf53809c.png

2、工作特點(diǎn)

? 查找速度快

? 模糊查找

? 非實(shí)時查找

? 搜索的是文件的全路徑,不僅僅是文件名

? 只搜索用戶具備讀取和執(zhí)行權(quán)限的目錄,沒有權(quán)限,即使數(shù)據(jù)庫有內(nèi)容,也不顯示,為了安全

(3)locate 用法

-i 不區(qū)分大小寫的搜索

-n # 只列舉前#個匹配項(xiàng)目

-r 支持正則

5f4239a2-bae0-11ef-8732-92fbcf53809c.png

二、find

實(shí)時查找工具,通過遍歷指定路徑完成文件查找(find不同于其他命令的習(xí)慣,選項(xiàng)只加一個-)

相較于locate,find功能非常強(qiáng)大,除了基于文件名字查找外,還能基于權(quán)限,文件類型,大小等好多方式進(jìn)行查找,所以被我們普遍應(yīng)用。

1、工作特點(diǎn)

?查找速度略慢

?精確查找(可以通過正則,通配符,實(shí)現(xiàn)模糊查詢)

?實(shí)時查找

?只搜索用戶具備讀取和執(zhí)行權(quán)限的目錄

2、find 用法格式

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

查找路徑:指定具體目標(biāo)路徑;默認(rèn)為當(dāng)前目錄

查找條件:指定的查找標(biāo)準(zhǔn),可以文件名、大小、類型、權(quán)限等標(biāo)準(zhǔn)進(jìn)行;默認(rèn)為找出指定路徑下的所有文件

處理動作:對符合條件的文件做操作,默認(rèn)輸出至屏幕,還有更多其他的處理動作。

3、查找條件

① 根據(jù)搜索層級

-maxdepth level 最搜索目錄深度, -1指定目錄為第1級,當(dāng)前目錄

-mindepth level 最搜索目錄深度

5f5813da-bae0-11ef-8732-92fbcf53809c.png

②根據(jù)文件名和inode查找:

-name :基于名稱的精確查找 ,支持使用文字通配符 *, ?, [], [^]等

-iname :基于名稱忽略大小寫的精確查找查找

-inum :基于inode查找

-samefile name:基于相同inode的查找(查找硬鏈接)

5f6de76e-bae0-11ef-8732-92fbcf53809c.png

-links n 硬鏈接數(shù)為n的文件

-regex "PATTERN":支持正則 ,默認(rèn)為(emacs標(biāo)準(zhǔn)的正則),查詢正則表達(dá)的范圍

例:".*/[a-z].*"搜索所有以小寫字母開頭的文件

-regextype egrep -regex支持egrep同標(biāo)準(zhǔn)的正則

5f854d6e-bae0-11ef-8732-92fbcf53809c.png

根據(jù)屬主、屬組查找:

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

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

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

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

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

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

5f97825e-bae0-11ef-8732-92fbcf53809c.png

④ 根據(jù)文件類型查找:

find -type

f: 普通文件

d: 目錄文件

l: 符號鏈接文件 (軟連接)

s :套接字文件 (/dev/log)

b: 塊設(shè)備文件 (/dev/sda)

c: 字符設(shè)備文件 (/dev/tty)

p: 管道文件

5facb3a4-bae0-11ef-8732-92fbcf53809c.png

⑤ 根據(jù)文件大小來查找:

find-size[+|-]#UNIT根據(jù)文件大小來查找 常用單位:k, M, G,c(byte)

#UNIT:(#-1, #] 如:6k表示(5k,6k]

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

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

⑥根據(jù)時間戳:

以“天”為單位:

-atime [+|-]#,(訪問時間)

#:[#,#+1)如:3 表示[3,4)

+#:[#+1,∞]如:+3表示[4,∞)

-#:[0,#)如:-3表示[0,3)

-mtime(修改時間)用法同上

-ctime(元數(shù)據(jù)改變時間)用法同上

以“分鐘”為單位: (用法同上)

-amin -mmin -cmin

5fc3ecd6-bae0-11ef-8732-92fbcf53809c.png

⑦ -perm根據(jù)權(quán)限查找:

mode:精確權(quán)限匹配

+mode[/mode]任何一類(u,g,o)對象的權(quán)限中只要能一位匹配即可,或關(guān)系,+從centos7開始淘汰

-mode 每一類對象都必須同時擁有指定權(quán)限,與關(guān)系

0表示不關(guān)注

5fd74808-bae0-11ef-8732-92fbcf53809c.png

⑧ 組合條件查找:

與:-a 可省略 例:find -nouser [-a] -nogroup

或:-o

非:-not, !

德·摩根定律:

(非 A)或 (非 B) = 非(A且 B) !A -o !B = !(A -a B)

(非 A)且 (非 B) = 非(A或 B) !A -a !B = !(A -o B)

4、處理動作

-print默認(rèn)

-delete直接刪除所查找到的文件,不詢問。

-ls長列出所查找到的文件,和ls -li 相似

-fls file將查找到的文件長列出導(dǎo)入到指定文件。

>file 將查詢結(jié)果導(dǎo)入file >> file 將查詢結(jié)果追加入file

-okcommand; 對查找到的文件當(dāng)做下一命令的參數(shù)去執(zhí)行(交互式)(不要忘記最后的 ; 是固定格式)

-execcommand;對查找到的文件當(dāng)做下一命令的參數(shù)去執(zhí)行(非交互式

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

5ff045a6-bae0-11ef-8732-92fbcf53809c.png

5、參數(shù)替換 xargs(“萬能”的參數(shù)傳遞)

xargs 用于產(chǎn)生某個命令的參數(shù),

用途:很多命令不支持管道| 來傳遞參數(shù),xargs 命令能傳遞所有參數(shù)

例如:find /etc/ -name "*.sh" | xargs ls -l

有些命令不能接受過多參數(shù) ,命令執(zhí)行可能會失敗,xargs可解決

例如:touch , rm 不能一次執(zhí)行超過一定的參數(shù)(大概30000)

可以 echo {1..30000} | xargs touch

鏈接:https://www.cnblogs.com/along21/p/7337302.html

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11304

    瀏覽量

    209476
  • Find
    +關(guān)注

    關(guān)注

    0

    文章

    54

    瀏覽量

    11650

原文標(biāo)題:Linux 文件查找神器對決:Locate 與 Find,誰是你的最佳選擇?

文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    linux查找文件-which命令使用

    本帖最后由 windworld 于 2016-2-25 11:05 編輯 我們經(jīng)常在linux查找某個文件,但不知道放在哪里了,可以使用下面的一些命令來搜索: which查看可執(zhí)行
    發(fā)表于 02-25 11:03

    CCS5.2如何自動跨文件查找變量,像CCS3.3的Find in file功能?

    我想查找工程下所有操作某個變量的文件,最好直接定位.CCS3.3中有個Find in file,在CCS5.2怎么直接查找所有使用到該變量的文件
    發(fā)表于 06-28 22:26

    linuxfind命令用法 linux學(xué)習(xí)心得

    find命令用來在指定目錄下查找文件的命令,和locate不同,find命令是實(shí)時精確查找,不做模糊匹配,但是可以使用通配符
    發(fā)表于 01-23 15:30

    linux中怎么用find查找文件

    find命令用來在指定目錄下查找文件的命令,和locate不同,find命令是實(shí)時精確查找,不做模糊匹配,但是可以使用通配符
    發(fā)表于 11-26 13:52

    linuxfind命令介紹

    find /etc/ -name passwd##查找/etc/下名稱中帶有passwd的文件
    發(fā)表于 07-18 07:24

    Linux文件查找命令find,xargs詳述

    Linux文件查找命令find,xargs詳述 前言:關(guān)于find命令 由于find具有強(qiáng)大的功
    發(fā)表于 11-07 11:17 ?0次下載

    Linux文件管理命令語法、參數(shù)、實(shí)例全匯總

    Linux find命令用來在指定目錄下查找文件。任何位于參數(shù)之前的字符串都將被視為欲查找的目錄名。如果使用該命令時,不設(shè)置任何參數(shù),則find
    的頭像 發(fā)表于 03-14 17:48 ?4138次閱讀
    <b class='flag-5'>Linux</b><b class='flag-5'>文件</b>管理命令語法、參數(shù)、實(shí)例全匯總

    Linux中的35個find命令用法

    Linux查找命令是Linux系統(tǒng)中最重要和最常用的命令之一。查找用于根據(jù)與參數(shù)匹配的文件指定的條件來搜索和
    的頭像 發(fā)表于 02-02 16:53 ?3671次閱讀
    <b class='flag-5'>Linux</b>中的35個<b class='flag-5'>find</b>命令用法

    如何使用命令行在Linux查找文件?

    終端,命令行提供了幾個用于搜索文件的工具,包括查找、定位、grep 和 where is,僅舉幾例。 那么如何使用命令行在Linux查找文件?在L
    的頭像 發(fā)表于 03-23 14:55 ?4252次閱讀

    find命令查找技巧

    find命令是我們?nèi)粘9ぷ髦斜容^常用的Linux命令。全面的掌握這個命令可以使很多操作達(dá)到事半功倍的效果。如果對find命令有以下這些疑惑,本文都能幫你解決。
    的頭像 發(fā)表于 03-20 09:33 ?798次閱讀

    如何在Linux查找文件所有者?

    Linux 系統(tǒng)中,每個文件和目錄都有一個所有者(owner)和一個所屬組(group)。所有者通常是創(chuàng)建該文件或目錄的用戶,而所屬組通常是文件或目錄所屬的組。在某些情況下,您可能
    的頭像 發(fā)表于 05-12 14:31 ?1282次閱讀
    如何在<b class='flag-5'>Linux</b>中<b class='flag-5'>查找文件</b>所有者?

    linux查找文件的命令

    Linux中,可以使用以下命令來查找文件find 命令:可以在指定目錄及其子目錄中查找文件,支持根據(jù)文件名、
    的頭像 發(fā)表于 11-08 14:24 ?1305次閱讀

    linuxfind用法詳解

    Linux中, find 命令是一個非常強(qiáng)大的工具,用于在指定目錄下查找文件和目錄。下面是 find 命令的用法和詳細(xì)解釋: 語法: find
    的頭像 發(fā)表于 11-08 14:29 ?723次閱讀

    Find My查找大升級,蘋果Find My可添加物品翻倍

    Apple「查找Find My可通過龐大的“Apple Find My Network” 實(shí)現(xiàn)全球查找功能。無數(shù)iOS、iPadOS、macOS、watchOS激活設(shè)備與
    的頭像 發(fā)表于 01-03 11:09 ?536次閱讀
    <b class='flag-5'>Find</b> My<b class='flag-5'>查找</b>大升級,蘋果<b class='flag-5'>Find</b> My可添加物品翻倍

    Linux文件查找

    Linux文件查找 1.find查找概述 為什么要有文件查找
    的頭像 發(fā)表于 12-03 17:09 ?258次閱讀