1. 程式人生 > >Linux 搜尋命令(locate/find/whereis/which/grep)

Linux 搜尋命令(locate/find/whereis/which/grep)

ocate 檔名搜尋
原理:從後臺資料庫中進行檔名搜尋,不會遍尋整個系統。所以速度較快。缺點也是隻搜尋檔名。

安裝 
yum install mlocate

locate命令的後臺資料庫 
/var/lib/mlocate 
在不同版本中可能是不同的名字,比如slocate

資料庫更新的配置檔案 
/etc/updatedb.conf 
(可以配置搜尋限制條件以及是否開啟限制,預設開啟) 
命令

locate 檔名  //查詢檔案位置
updatedb //更新資料庫(資料庫預設一天更新一次)
1
2
更新DB(updatedb)需要用root許可權, 
另外預設不搜尋的目錄等設定參考/etc/updatedb.conf 
, 
預設etc配置檔案規定不搜尋tmp、cache、media等目錄 以及各種檔案系統,包括iso9660 cifs ··

whereis 和which
whereis
搜尋”命令”的命令。搜尋系統命令所在路徑及幫助文件所在位置 
只能搜尋系統命令,不能搜尋自己建立的命令

命令

whereis 命令名 
  選項:-b 只查詢可執行檔案
       -m 只查詢幫助檔案
1
2
3
which
搜尋”命令”的命令。搜尋系統命令位置和別名

命令

which  命令名
//輸出該命令的位置以及別名
1
2
shell內建的命令是無法找到執行檔案的(shell自帶),外來命令才可以找到。

環境變數$PATH 
執行命令是去PATH中的路徑中去尋找相應的命令(以絕對路徑的形式來進行執行),都找不到時則返回命令沒有發現。

find
功能眾多導致選項多。

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

例:find / -name "abc"
    //避免使用大範圍的搜尋,佔用系統資源,檔名可以使用萬用字元進行完全匹配。注意加雙引號。
1
2
3
4
主要萬用字元
* 任意內容(可以為多個字元)
? 任意字元 (只能是一個字元)
[ ] 掛號中的任意一個字元(只能是一個字元)
find /root -name "xxx" 搜尋檔名

find /root -iname "xxx" 搜尋檔名不區分大小寫

find /root -user root 查詢所有者為root

find /root -nouser 搜尋沒有所有者檔案(垃圾檔案,核心檔案,外來檔案)## 標題 ##

find /var/log -mtime +10 
按照天數搜尋 
+10十天前 ,
10第十天,
-10十天內
// mtime  修改檔案內容的時間 modify (修改)
// ctime  改變檔案屬性的時間 change
// atime  檔案訪問的時間 access
find . -size -25k 按照檔案大小搜尋,小於25kB的檔案(小寫k)

find /root -size +2M
大於2M的檔案(大寫M) 

find . -inum 262422 i節點查詢
操作-exec ls -lh {} \;

find /root -size +20 -a -size -50k   
//同時滿足兩個要求,-a 起 與的作用(and/&&)   -o  或的作用(or/||)
######################
find /root -size +20 -and -size -50k -exec ls -lh {} \;
//在執行完第一個命令後,繼續執行第二個命令(可以在執行完第一個後可以執行的命令),後面的符號為固定格式。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
grep
在某個檔案中搜索指定的內容,使用包含匹配,使用正則表示式。

命令
grep [選項] 字串 檔案
i-忽略大小寫
v-排除指定字串
1
2
3
*搜尋檔名 使用萬用字元 
搜尋檔案中的內容則是使用正則表示式。*

Linux下檢視某個目錄下的檔案、或檔案夾個數
用到3個命令: 
ls列目錄、用grep過慮、再用wc統計。 
舉例說明: 
1、檢視統計當前目錄下檔案的個數 
  ls -l | grep “^-” | wc -l 
2、檢視統計當前目錄下檔案的個數,包括子目錄裡的。 
  ls -lR| grep “^-” | wc -l 
3、檢視某目錄下資料夾(目錄)的個數,包括子目錄裡的。 
  ls -lR| grep “^d” | wc -l

命令解釋: 
ls -l 
長列表輸出該目錄下檔案資訊(注意這裡的檔案,不同於一般的檔案,可能是目錄、連結、裝置檔案等),每一行對應一個檔案或目錄,如果要列出所有子目錄下的檔案就是ls -lR。 
grep “^-” 
這裡將長列表輸出資訊過濾一部分,只保留一般檔案,如果只保留目錄就是grep “^d”。 
wc -l 
統計輸出資訊的行數,因為已經過濾得只剩一般檔案了,所以統計結果就是一般檔案資訊的行數,又由於一行資訊對應一個檔案,所以也就是檔案的個數。
--------------------- 
作者:conling_ 
來源:CSDN 
原文:https://blog.csdn.net/conling_/article/details/72904061?utm_source=copy 
版權宣告:本文為博主原創文章,轉載請附上博文連結!