天天看點

Linux系列教程(六)——Linux常用指令之檔案搜尋指令

Linux系列教程(六)——Linux檔案搜尋指令

  前一篇部落格我們講解了Linux連結指令和權限管理指令, 通過 ln -s  連結名 表示建立軟連結,不加-s表示建立硬連結;還有三個更改權限的指令,chmod指令可以更改檔案或目錄權限,chown指令可以改變檔案或目錄所有者,chgrp指令可以改變檔案或目錄所屬組。但是大家需要注意的是,後面兩個指令隻能由root使用者來完成,而chmod指令除了root使用者能完成,還有所更改檔案或目錄的所有者。那麼這篇部落格我們将繼續介紹Linux指令——檔案搜尋指令。

1、最強大的搜尋指令:find

  首先進行一點說明,find指令是我們在Linux系統中用來進行檔案搜尋用的最多的指令,功能特别強大。但是我們要說的是盡量少用find指令去執行搜尋任務,就算要搜尋我們也應該盡量的縮小範圍,也不要在伺服器使用高峰期進行檔案搜尋,因為搜尋也是很占系統資源的。這就需要我們在進行Linux檔案整理的時候,盡量規範化,什麼檔案放在什麼目錄下都要有比較好的約定。

  find這個指令如果要完全講清楚,恐怕得花費很長的時間,而且很多用法我們幾乎用不到,是以這裡我就不一一介紹此指令的每一種用法了,我會詳細介紹幾種最常用的用法,大家隻需要記住這幾種就完全夠我們日常使用了。

  ①、指令名稱:find

  ②、英文原意:

  ③、指令所在路徑:/bin/find

  ④、執行權限:所有使用者

  ⑤、功能描述:進行各種花式檔案搜尋

  ⑥、文法:find【搜尋範圍】【比對條件】

  注意:Linux搜尋和windows是有明顯差別的,Linux嚴格區分檔案大小寫。

一、根據 檔案或目錄名稱 搜尋

  find 【搜尋目錄】【-name或者-iname】【搜尋字元】:-name和-iname的差別一個區分大小寫,一個不區分大小寫

  ①、find /etc -name init   (精準搜尋,名字必須為 init 才能搜尋的到)

  ②、find /etc -iname init   (精準搜尋,名字必須為 init或者有字母大寫也能搜尋的到)

  ③、find /etc -name *init  (模糊搜尋,以 init 結尾的檔案或目錄名) 

  ④、find /etc -name init??? (模糊搜尋,? 表示單個字元,即搜尋到 init___)

  

Linux系列教程(六)——Linux常用指令之檔案搜尋指令

二、根據 檔案大小 搜尋

  比如:在根目錄下查找大于 100M 的檔案

  find / -size +204800

  這裡 +n 表示大于,-n 表示小于,n 表示等于

  1 資料塊 == 512 位元組 ==0.5KB,也就是1KB等于2資料塊

  100MB == 102400KB==204800資料塊

Linux系列教程(六)——Linux常用指令之檔案搜尋指令

三、根據 所有者和所屬組 搜尋

  ①、在home目錄下查詢所屬組為 root 的檔案

    find /home -group root

  ②、在home目錄下查詢所有者為 root 的檔案

    find /home -user root

Linux系列教程(六)——Linux常用指令之檔案搜尋指令

四、根據 時間屬性 搜尋

  find 【路徑】【選項】【時間】

   選項有下面三種:-amin  通路時間

           -cmin   檔案屬性被更改

           -mmin  檔案内容被修改

  時間:+n,-n,n分别表示超過n分鐘,n分鐘以内和n分鐘

  範例:在 /etc 目錄下查找5 分鐘内被修改過屬性的檔案和目錄

     find /etc -cmin -5

五、根據 檔案類型或i節點 搜尋

  -type 根據檔案類型查找:f表示檔案,d表示目錄,l表示軟連結

  範例:查找 /home 目錄下檔案類型是目錄的   find /home -type l

  -inum 根據i節點查找

  範例:查找 /tmp 目錄下i節點為400342的檔案或目錄  find /tmp -inum 400342

Linux系列教程(六)——Linux常用指令之檔案搜尋指令

六、組合條件 搜尋  

  這裡有兩個參數:

  ①、-a  表示兩個條件同時滿足(and)

  ②、-o  表示兩個條件滿足任意一個即可(or)

  範例:查找/etc目錄下大于80MB同時小于100MB的檔案

  find /etc -size +163840 -a -size -204800

2、在檔案資料庫中查找檔案指令:locate  

  ①、指令名稱:locate

  ③、指令所在路徑:/usr/bin/locate

  ⑤、功能描述:在檔案資料庫中查找檔案

  ⑥、文法:locate【檔案名】

        -i  不區分大小寫

  注意:這裡和 find 指令是有差別的,find是全盤檢索,而locate 是在檔案資料庫中進行搜尋。是以locate指令的執行要比find指令執行速度快很多。但是這裡有個問題,檔案資料庫是需要不斷更新的。我們新建立的檔案如果不更新 檔案資料庫,使用 locate 是查找不到的。

  updatedb  手動更新資料庫,但是對于/tmp目錄下的建立檔案,是更新不到檔案資料庫的,因為/tmp目錄不屬于檔案資料庫的收錄範圍。 

Linux系列教程(六)——Linux常用指令之檔案搜尋指令

3、搜尋指令所在的目錄及别名資訊:which 

  ①、指令名稱:which

  ③、指令所在路徑:/usr/bin/which

  ⑤、功能描述:搜尋指令所在的目錄及别名資訊

  ⑥、文法:which【指令】

    範例:查詢 ls 指令所在目錄以及别名資訊

Linux系列教程(六)——Linux常用指令之檔案搜尋指令

4、搜尋指令所在的目錄及幫助文檔路徑:whereis

  ①、指令名稱:whereis

  ③、指令所在路徑:/usr/bin/whereis

  ⑤、功能描述:搜尋指令所在的目錄及幫助文檔路徑

  ⑥、文法:whereis【指令】

    範例:查詢 ls 指令所在目錄以及幫助文檔路徑

Linux系列教程(六)——Linux常用指令之檔案搜尋指令

5、在檔案中搜尋字元串比對的行并輸出:grep

  ①、指令名稱:grep

  ③、指令所在路徑:/bin/grep

  ⑤、功能描述:在檔案中搜尋字元串比對的行并輸出

  ⑥、文法:grep -iv 【指定字元串】【檔案】

        -i 不區分大小寫

        -v 排除指定字元串

    範例:查找 /root/install.log 檔案中包含 mysql 字元串的行,并輸出

    grep mysql /root/install.log

Linux系列教程(六)——Linux常用指令之檔案搜尋指令

6、總結

  本篇部落格我們介紹了幾種檔案搜尋指令,其中find是用的最多的也是功能最強大的檔案或目錄搜尋指令,和另一個搜尋指令locate的差別是,find指令是全盤搜尋,剛建立的檔案也能搜尋的到,而locate是在檔案資料庫中進行搜尋,對比find指令搜尋速度快很多,但是新建立的檔案如果沒有收錄到檔案資料庫中,使用locate指令是搜尋不到的,再就是/tmp目錄是不收錄到檔案資料庫的,也就是說使用locate指令搜尋不到在/tmp目錄下的檔案。

  然後我們介紹搜尋指令所在的目錄以及别名資訊which,搜尋指令所在的目錄以及幫助文檔路徑whereis,最後一個指令grep和前面搜尋檔案或目錄指令是不同的,grep是在檔案中搜尋比對的字元串,是在檔案中進行内容搜尋,這個指令後面用到的比較多,大家需要記住用法。

作者:IT可樂

出處:http://www.cnblogs.com/ysocean/

資源:微信搜【IT可樂】關注我,回複 【電子書】有我特别篩選的免費電子書。

本文版權歸作者所有,歡迎轉載,但未經作者同意不能轉載,否則保留追究法律責任的權利。

繼續閱讀