Linux經常使用命令之文件搜索命令

 


  前一篇博客咱們講解了Linux連接命令和權限管理命令, 經過 ln -s  連接名 表示建立軟連接,不加-s表示建立硬連接;還有三個更改權限的命令,chmod命令能夠更改文件或目錄權限,chown命令能夠改變文件或目錄全部者,chgrp命令能夠改變文件或目錄所屬組。可是你們須要注意的是,後面兩個命令只能由root用戶來完成,而chmod命令除了root用戶能完成,還有所更改文件或目錄的全部者。那麼這篇博客咱們將繼續介紹Linux命令——文件搜索命令。mysql

 

一、最強大的搜索命令:find

  首先進行一點說明,find命令是咱們在Linux系統中用來進行文件搜索用的最多的命令,功能特別強大。可是咱們要說的是儘可能少用find命令去執行搜索任務,就算要搜索咱們也應該儘可能的縮小範圍,也不要在服務器使用高峯期進行文件搜索,由於搜索也是很佔系統資源的。這就須要咱們在進行Linux文件整理的時候,儘可能規範化,什麼文件放在什麼目錄下都要有比較好的約定。sql

  find這個命令若是要徹底講清楚,恐怕得花費很長的時間,並且不少用法咱們幾乎用不到,因此這裏我就不一一介紹此命令的每一種用法了,我會詳細介紹幾種最經常使用的用法,你們只須要記住這幾種就徹底夠咱們平常使用了。windows

  ①、命令名稱:find服務器

  ②、英文原意:post

  ③、命令所在路徑:/bin/findurl

  ④、執行權限:全部用戶spa

  ⑤、功能描述:進行各類花式文件搜索3d

  ⑥、語法:find【搜索範圍】【匹配條件】htm

  注意:Linux搜索和windows是有明顯區別的,Linux嚴格區分文件大小寫。

1、根據 文件或目錄名稱 搜索

  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___)

  

 

2、根據 文件大小 搜索

  好比:在根目錄下查找大於 100M 的文件

  find / -size +204800

  這裏 +n 表示大於,-n 表示小於,n 表示等於

  1 數據塊 == 512 字節 ==0.5KB,也就是1KB等於2數據塊

  100MB == 102400KB==204800數據塊

  

 

3、根據 全部者和所屬組 搜索

  ①、在home目錄下查詢所屬組爲 root 的文件

    find /home -group root

  ②、在home目錄下查詢全部者爲 root 的文件

    find /home -user root

  

 

4、根據 時間屬性 搜索

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

   選項有下面三種:-amin  訪問時間

           -cmin   文件屬性被更改

           -mmin  文件內容被修改

  時間:+n,-n,n分別表示超過n分鐘,n分鐘之內和n分鐘

  範例:在 /etc 目錄下查找5 分鐘內被修改過屬性的文件和目錄

     find /etc -cmin -5

 

5、根據 文件類型或i節點 搜索

  -type 根據文件類型查找:f表示文件,d表示目錄,l表示軟連接

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

  -inum 根據i節點查找

  範例:查找 /tmp 目錄下i節點爲400342的文件或目錄  find /tmp -inum 400342

  

 

6、組合條件 搜索  

  這裏有兩個參數:

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

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

  範例:查找/etc目錄下大於80MB同時小於100MB的文件

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

 

二、在文件資料庫中查找文件命令:locate  

  ①、命令名稱:locate

  ②、英文原意:

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

  ④、執行權限:全部用戶

  ⑤、功能描述:在文件資料庫中查找文件

  ⑥、語法:locate【文件名】

        -i  不區分大小寫

  注意:這裏和 find 命令是有區別的,find是全盤檢索,而locate 是在文件資料庫中進行搜索。因此locate命令的執行要比find命令執行速度快不少。可是這裏有個問題,文件資料庫是須要不斷更新的。咱們新建立的文件若是不更新 文件資料庫,使用 locate 是查找不到的。

  updatedb  手動更新資料庫,可是對於/tmp目錄下的新建文件,是更新不到文件資料庫的,由於/tmp目錄不屬於文件資料庫的收錄範圍。 

  

 

三、搜索命令所在的目錄及別名信息:which 

  ①、命令名稱:which

  ②、英文原意:

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

  ④、執行權限:全部用戶

  ⑤、功能描述:搜索命令所在的目錄及別名信息

  ⑥、語法:which【命令】

    範例:查詢 ls 命令所在目錄以及別名信息

  

 

四、搜索命令所在的目錄及幫助文檔路徑:whereis

  ①、命令名稱:whereis

  ②、英文原意:

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

  ④、執行權限:全部用戶

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

  ⑥、語法:whereis【命令】

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

  

 

五、在文件中搜尋字符串匹配的行並輸出:grep

  ①、命令名稱:grep

  ②、英文原意:

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

  ④、執行權限:全部用戶

  ⑤、功能描述:在文件中搜尋字符串匹配的行並輸出

  ⑥、語法:grep -iv 【指定字符串】【文件】

        -i 不區分大小寫

        -v 排除指定字符串

    範例:查找 /root/install.log 文件中包含 mysql 字符串的行,並輸出

    grep mysql /root/install.log

  

 

六、總結

  本篇博客咱們介紹了幾種文件搜索命令,其中find是用的最多的也是功能最強大的文件或目錄搜索命令,和另外一個搜索命令locate的區別是,find命令是全盤搜索,剛建立的文件也能搜索的到,而locate是在文件資料庫中進行搜索,對比find命令搜索速度快不少,可是新建立的文件若是沒有收錄到文件資料庫中,使用locate命令是搜索不到的,再就是/tmp目錄是不收錄到文件資料庫的,也就是說使用locate命令搜索不到在/tmp目錄下的文件。

  而後咱們介紹搜索命令所在的目錄以及別名信息which,搜索命令所在的目錄以及幫助文檔路徑whereis,最後一個命令grep和前面搜索文件或目錄命令是不一樣的,grep是在文件中搜索匹配的字符串,是在文件中進行內容搜索,這個命令後面用到的比較多,你們須要記住用法。

相關文章
相關標籤/搜索