1. 程式人生 > >linux命令:檔案搜尋(locate、whereis、which、find、grep)

linux命令:檔案搜尋(locate、whereis、which、find、grep)

locate(檔案搜尋命令):

1、格式:

locate 檔名

2、描述:

在後臺數據庫(/var/lib/mlocate)中按檔名搜尋,速度更快,是因為不用遍歷整個系統。mlocate檔案是定時更新的,在使用locate命令前可以先使用命令 updatedb 強制更新資料庫。

3、其他:

在/tmp 和 root 目錄下分別新建一個檔案aaa.txt,然後更新資料庫(updatedb),搜尋aaa.txt檔案,會發現只搜尋到了root 目錄下的aaa.txt,tmp目錄下的沒有搜尋到。這是因為:
/etc/updatedb.conf 這個檔案的配置在起作用。
/etc/updatedb.conf:


這裡寫圖片描述

whereis(命令搜尋命令):

格式:whereis [選項] 命令名

作用:搜尋命令所在路徑及幫助文件所在位置
選項:
-b:只查詢可執行檔案
-m:只查詢幫助檔案
這裡寫圖片描述

which(命令搜尋命令):

格式:which 命令名

作用:搜尋檔案所在的路徑及別名(有的命令沒有別名)

這裡寫圖片描述

find(檔案搜尋命令):

格式:find [搜尋範圍] [搜尋條件]

作用:搜尋檔案
例子:find / -name haha.txt ; find / -name “haha.*”
注意:避免最大搜索範圍;如果需要匹配,使用萬用字元匹配(萬用字元是完全匹配)。
linux中的萬用字元:
1、*:匹配任意內容
2、?:匹配任意一個字元
3、[]:匹配人一箇中括號中的字元

應用:

1、按“不區分大小寫、按照所有者”查詢

find /root -iname install.log // 不區分大小寫
find /root -user root // 按照所有者搜尋
find /root -nouser //查詢沒有所有者的檔案

2、按照“時間“查詢

find /var/log/ -mtime +10 //查詢10天修改的檔案
/**
 * -10:10天內修改的檔案
 * 10:10天當天修改的檔案
 * +10:10天前修改的檔案
 * 
 * -atime:檔案訪問時間
 * -ctime:改變檔案屬性
 * -mtime:修改檔案內容
 * 
 * 還可以按照其他時間單位
 */

3、按照“檔案大小“查詢

find . -size 25k //查詢當前目錄下大小為25k的檔案
/**
 * -25k:小於25k的檔案
 * 25k:等於25k的檔案
 * +25k:大於25k的檔案
 * 
 * k、M,前者小寫、後者大寫
 */

find /etc -size +20k -a -size 50k // 查詢etc目錄下大於20k並且小於50k的檔案 
/**
 * -a:and 邏輯與
 * -o:or 邏輯或
 */

find /etc -size +20k -a -size 50k -exec ls -lh {} \; // 查詢etc目錄下大於20k並且小於50k的檔案,並顯示詳細資訊
/**
 * -exec/-ok 命令{} \; 對搜尋結果執行操作
 */

4、按照“節點“查詢

find /root -inum 654641 // 查詢i節點為654641的檔案

grep(搜尋字串命令):

格式:grep [選項] 字串 檔名

選項:
1、-i:忽略大小寫
2、-v:排除指定字串

例子:

這裡寫圖片描述

find 與 grep 的區別:

1、find命令在系統當中搜尋符合條件的檔名,如果需要匹配使用萬用字元,萬用字元是完全匹配。
2、grep命令在檔案當中搜尋符合條件的字串,如果需要匹配使用正則表示式,正則表示式是包含匹配。