天天看點

三、檔案搜尋指令【基礎篇】

1、locate 指令格式

locate用法

locate 檔案名

在linux指定的資料庫中按檔案名搜尋,搜尋速度特别快

資料庫位址

/var/lib/mlocate

locate

指令搜尋的檔案名全都存在該目錄下

mlocate

資料庫并不會實時更新,而是每天更新一次

更新資料庫指令(使用該指令随時更新資料庫)

updatedb

locate指令配置(使用locate搜尋不生效應該就是該配置的原因)

  • 該配置檔案存在于:

    /etc/updatedb.conf

  • PRUNE_BIND_MOUNTS = "YES"

    //

    yes

    代表開啟搜尋限制
  • PRUNEFS =

    // 搜尋時,不搜尋的檔案系統
  • PRUNENAMES =

    // 搜尋時,不搜尋的檔案類型
  • PRUNEPATHS =

    // 搜尋時,不搜尋的路徑

2、搜尋指令的指令whereis與which

whereis用法(該搜尋隻能搜尋指令)

whereis 指令名

搜尋指令所在路徑及幫助文檔所在位置

- 選項

-

-b

隻查找可執行檔案

-

-m

隻查找幫助檔案

which用法(該搜尋隻能搜尋指令)

which 指令名

搜尋指令所在路徑及别名

PATH環境指令

如果想直接使用指令,則需要在PATH中填寫該指令所在的目錄

PATH環境變量: 定義的是系統搜尋指令的路徑

輸入

echo $PATH

,即可檢視

$PATH

中有哪些目錄,如下例:

root@ubuntu:/$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
           

3、檔案搜尋指令 find

find 用法

find [搜尋範圍] [搜尋條件]

find 舉例

root@ubuntu:/$ find / -name .log
/home/ceshi/.log
           
注:避免大範圍搜尋,因為搜尋非常耗費系統資源

Linux中的通配符

使用find搜尋時,隻知道檔案的其中一個字元,那麼就可以使用通配符,可以使你更容易搜尋到檔案

-

*

比對任意内容

-

?

比對任意一個字元

-

[]

比對任意一個中括号内的字元

find 擴充

  • find /home -iname install.log

    // 不區分大小寫
  • find /home -user root

    // 按照所有者搜尋
  • find /home -nouser

    // 查找沒有所有者的檔案
  • find /home/log/ -mtime +10

    // 查找10天前修改的檔案
    • atime

      檔案通路時間
    • ctime

      改變檔案屬性
    • mtime

      修改檔案内容
    • -10

      10天内修改檔案 |

      10

      10天當天修改的檔案 |

      +10

      10天前修改的檔案
  • find /etc -size +25k

    或者

    find /etc -size +2M

    // 查找檔案大小大于25k或者2M的檔案
    • 這裡

      k

      必須是小寫,

      M

      必須是大寫
    • 其餘用法都跟上列一樣
  • find /etc inum 262422

    // 查找i節點是262422的檔案
  • find /etc -size +20k -a -size -50k

    // 查找/etc/目錄下,大于20kb并且小于50kb的檔案
    • -a and

      // 邏輯與,兩個條件都滿足
    • -o or

      // 邏輯或,兩個條件滿足一個即可
  • find /etc -size +20k -a -size -50k -exec ls -lh {} \;

    // 查找/etc/目錄下,大于20kb并且小于50kb的檔案,并顯示詳細資訊
    • -exec

      #指令#

      {} \;

      // 對搜尋結果執行操作

4、搜尋字元串指令grep

grep 用法

grep [選項] 字元串 檔案名

在檔案當中比對符合條件的字元串

  • 選項
  • -i

    忽略大小寫
  • -v

    排除指定字元串

grep 舉例

查找123.log檔案裡包含”a”的部分

root@ubuntu:/home/ceshi$ grep "a" .log
casca
a
as
           

find指令 和 grep指令的差別

  • find

    指令:在系統中搜尋符合條件的檔案名,如果需要比對,就得使用通配符,通配符是完全比對
  • grep

    指令:在檔案中搜尋符合條件的字元串,如果需要比對,使用正規表達式進行比對,正規表達式包含比對

繼續閱讀