<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    八:別玩捉迷藏了!搜索命令

    對于任何一個系統而言,文件的搜索是必不可少的,趕緊看一看Linux下“Ctrl+F”功能怎么使用!

    簡單的快速通過文件名查找:locate
    示例:locate 文件名,默認模糊匹配在數據文件中包含指定文件名的記錄。locate命令一個最大的特點在于搜索的速度非常快。因為locate命令不是對本地磁盤上的文件直接進行搜索,而是搜索一個數據文件的內容(當然了,這個數據文件需要包含本地磁盤的文件信息)。這個文件通常位于/var/lib/mlocate(Linux版本之間可能會有細微的不同),看到這里你可能會想,新增的文件是不是會同步的被寫入到這個數據文件中呢,答案是不一定,這要看系統刷新數據文件的頻度,一般來說是一天,但是你也可以手動強制通過updatedb命令來刷新數據文件的內容(該命令略占系統資源,不要頻繁使用)。

    不過呢,有些時候,我們搜索一些明明存在的文件時卻搜索不到,使用了updatedb命令之后也沒有效果。
    做一個演示,在系統“/tmp”目錄下新建一個文件,名為12345678910.test,這個文件名我認為已經夠特殊了。

    現在使用locate命令來查找這個文件當然找不到,使用了updatedb之后呢?答案是依然找不到。。這就讓人納悶了,這命令好不好用,為什么找不到,我本人新建的文件,明明擺在那里。
    通過不斷的man,你會定位到一個叫“/etc/updatedb.conf”的文件,打開看一下

    其中我們看到了“/tmp”目錄,這有什么聯系呢?

    當你閱讀完幫助文檔之后你就會明白,數據文件的加載是有一定的規則的,這些個規則就在“/etc/updatedb.conf”文件中配置,我們會看到,這個配置文件中定義了哪些文件系統需要排除掃描,哪些文件名需要排除掃描,以及哪些目錄需要排除掃描。而上圖中,“/tmp”目錄被列入排除掃描的路徑,所以,我們在“/tmp”目錄下做演示,出現搜索不到的問題,就沒有任何問題。
    locate命令能夠快速的定位到文件,開銷小,效率高,但是遺憾的是,他只能根據文件名來定位文件,而且使用上還有一些不方便(效率帶來的代價),或許要刷新數據文件,修改配置文件。

    強大的文件搜索命令:find
    find命令非常強大,選項非常多,以至于你能想象到的搜索功能他幾乎都能實現。下面列舉幾個常用的示例。

    示例1:通過文件名匹配
    find [目錄] -name 文件名,目錄是可選項,如果不設置,則從根目錄開始匹配,但是強烈建議縮小查找的范圍,節約系統開銷,如果有需要,還可以添加“-i”選項忽略大小寫
    find ~ -name demoFile,查找家目錄下名為demoFile的文件
    說到通過文件名來匹配,那么通配符是一定要知道的,find命令結合通配符能夠完成日常很多查詢工作。

    常用通配符:
    *注意,使用通配符的時候需要給匹配表達式添加引號引起
    *:匹配任意多個字符(包括零個或一個)
    示例:find ~ -name “a*”,查找家目錄下所有以a開頭的文件
    ?:匹配任意一個字符(不包括零個)
    示例:find ~ -name “a???”,查找家目錄下所有以a開頭,文件名長度為四個字符的文件
    [characters]:匹配任意一個屬于字符集中的字符
    示例:find ~ -name “[abc]*”.txt,查找只能包含a或b或c任意一個或多個任意組合,并且以”.txt“結尾的文件
    [!characters]:匹配任意一個不是字符集中的字符
    同上,取反

    常用字符類:
    匹配一個字符類,[[:class:]]:匹配任意一個屬于指定字符類中的字符
    [:alnum:]:匹配任意一個字母或數字
    示例:find ~ -name “[[:alnum:]]*.cfg”,查找家目錄下含有字母或者數字,并且以”.cfg”結尾的文件
    下列字符類使用方式相同
    [:alpha:]:匹配任意一個字母
    [:digit:]:匹配任意一個數字
    [:lower:]:匹配任意一個小寫字母
    [:upper]:匹配任意一個大寫字母

    示例2:通過所屬用戶來匹配
    有些時候,在一些公共目錄,有很多其他用戶創建的文件,我們需要把他們過濾掉
    指定所屬用戶:-user 用戶名
    示例:find /tmp -user root -name “a*”,查找tmp目錄下所有以a開頭并且屬于root用戶的文件
    順便一提,有些文件沒有所屬用戶,可以添加-nouser進行篩選。(沒有所有者的文件,一般認為是垃圾文件,但是內核產生的文件不會有所有者,比如內存文件,或者是外來文件,一般是外接設備帶來的數據,除了這兩種情況,其他情況都視為垃圾文件)

    示例3:通多特定時間來匹配
    -atime 文件訪問時間 +-10(默認單位”天“)
    -ctime 改變文件屬性 +-10
    -mtime 修改文件內容 +-10
    示例:
    find ~-mtime +10 搜索十天之前,修改過內容的文件
    find ~ -ctime -10 搜索十天之內,修改過文件屬性
    find ~ -atime 10 過去的第十天,被訪問過的文件

    示例4:通過文件大小來匹配
    -size 25k
    find /root -size 25k 搜索剛好是25k的文件(但是文件大小一般不會這么巧是25k,嘗試搜索”+大于“或者”-小于“k)

    示例5:組合匹配
    也就是多條件查詢
    -a:and
    find ~ -size +25k -a -size -75k,查找大小介于25~75k的文件
    -o:or
    find /root -size +25k -o -size -10k,只需要大于25k或者小于10k的文件
    之前提到過的種種選項,都可以組合使用,比如就寫一個長一點的
    find ~ -name “a*” -user root -a -size -5k -a -atime 1,查找以a開頭,屬于root用戶,并且要小于5k,還需要在一天之內被訪問過的文件。

    命令交接
    -exec XXX {} \; 固定格式 ,XXX代表需要的命令,但是要注意,不是所有命令都適用
    find ~ -size +25k -o -size -10k -exec ls -l {} \;
    將查詢的結果通過一個指定的命令進行處理
    上面記錄的僅僅是選項中很小的一部分,更多需求還需要查閱幫助手冊或者搜索引擎。

    posted on 2015-06-21 14:47 都較瘦 閱讀(131) 評論(0)  編輯  收藏 所屬分類: Linux

    <2025年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    導航

    統計

    公告

    博客定位:囿于目前的水平,博客定位在記錄自己的學習心得和隨手的練習

    常用鏈接

    留言簿

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 成年女人免费视频播放77777| 成人无码WWW免费视频| 亚洲av永久无码精品秋霞电影秋 | 狠狠亚洲婷婷综合色香五月排名| 四虎影视永久免费观看网址| 国产视频精品免费| 国产一精品一aⅴ一免费| 免费不卡中文字幕在线| 亚洲精品成a人在线观看| 国产午夜亚洲不卡| 亚洲精品无码成人片久久| 亚洲AV综合色一区二区三区| 亚洲AV永久无码精品一百度影院| 亚洲国产精品国自产拍电影| 亚洲男人天堂2017| 亚洲国产成人手机在线电影bd| 亚洲人成电影在线观看青青| 亚洲天然素人无码专区| 在线91精品亚洲网站精品成人| 一级特黄录像视频免费| 91在线免费视频| 3d动漫精品啪啪一区二区免费 | 免费国产a理论片| 国产精品99爱免费视频| 久久这里只精品热免费99| 很黄很黄的网站免费的| 日本19禁啪啪无遮挡免费动图| 亚洲成a人片在线观看老师| 亚洲精品少妇30p| 亚洲国产日韩在线| 午夜亚洲乱码伦小说区69堂| 亚欧国产一级在线免费| 香港a毛片免费观看| 最近2019中文字幕mv免费看| 亚洲国产av一区二区三区| 国产成人亚洲综合色影视| 亚洲乱码中文论理电影| 国产亚洲高清在线精品不卡| 久久精品私人影院免费看| 久久精品女人天堂AV免费观看| 亚洲精品国产电影|