Linux 5大查詢命令

weixin_34185364發表於2017-09-27

Which 

which  [-a]  command

查詢系統命令位置,只在$PATH環境變數中查詢,並且預設只返回第一個查詢結果

引數:

-a 列出所有的查詢結果

例:which -a php


Type

type  [option]  command

用於區分某個命令到底是由shell自帶的,還是由shell外部的獨立二進位制檔案提供的

引數:

-t  輸出命令的type,如:alias、file、builtin等

-p  如是外部命令,則輸出絕對地址

例:type -t cd

Whereis

whereis  [-bmsu]  file

whereis命令用於定位可執行檔案、原始碼檔案、幫助檔案在系統中的位置

引數:

-b 查詢二進位制檔案

-m 查詢說明檔案

-s 查詢原始碼檔案

-u 查詢非上述3種檔案的其他檔案

例:whereis -b php

PS:whereis預設從資料庫檔案(Linux將所有的檔案都記錄在一個資料庫檔案,但並不實時更新,一般一天更新一次)中查詢指定檔案,因此whereis比其他從硬碟查詢的命令,效率高很多


Find

find      [path]     [option]    [action]       

find命令可查詢指定路徑下所有符合條件的檔案或目錄,find命令引數可以擬分成兩大類,一種是普通引數,一種是時間引數

普通引數:

-type 根據檔案型別進行搜尋

          find /usr/bin -type d   查詢 /usr/bin目錄下所有的目錄

-name 根據檔名進行搜尋(-iname 不區分大小寫)

          find /usr/bin -name '*.JPG' 查詢/usr/bin目錄下以JPG為字尾的檔案和目錄

-size 根據檔案大小進行搜尋(+n 大於 -n 小於)

          find /usr/bin -size +10M 查詢/usr/bin目錄下大於10M的檔案和目錄

-prem 根據檔案讀寫許可權進行搜尋

          find /usr/bin -perm 644 查詢/usr/bin目錄下讀取許可權為644的檔案和目錄

-group 根據檔案擁有組進行搜尋

          find /usr/bin -group li 查詢/usr/bin目錄下li組的檔案或目錄

-empty 匹配空檔案或空目錄

          find /usr/bin -empty 查詢/usr/bin目錄下的空檔案和空目錄

時間相關引數:

time 天 

min 分鐘

+n n天(分鐘)之前 

-n n天(分鐘)之內

-atime +n 搜尋n天之前被訪問過的檔案或目錄

          find ./ -atime +5 查詢當前目錄下,最後一次訪問時間在5天前的檔案或目錄

          find /var \! -atime -90  在/var目錄下找出90天之內未被訪問過的檔案

-mtime -n 搜尋n天之內被修改過檔案內容的檔案或目錄

          find ./ -mtime -5 查詢當前目錄下,5天呃逆有進行過內容修改的檔案或目錄

-cmin -n 搜尋n分鐘之內被修改過內容、許可權、屬性的檔案或目錄

          find ./ -cmin -5 在當前目錄,搜尋5分鐘之內被修改過內容、許可權、屬性的檔案和目錄

-cnewer file 搜尋修改時間(change time:修改檔案屬性、許可權、內容、大小的時間)比指定檔案的修改時間更接近現在的檔案或目錄

          find ./ -cnewer demo.txt 在當前目錄下,搜尋修改時間比demo.txt檔案的修改時間更大的檔案或目錄

find匹配後執行操作:

預定義操作

          find ./ -name '*.bak' -delete 刪除當前目錄下,所有以bak為字尾的檔案和目錄

          find ./ -name '*.log' -quit 在當前目錄下搜尋以log為字尾的檔案和目錄,搜尋到一個就退出

自定義操作

          find ./ -type f -name '*.bak' -exec rm -rf {} \; 查詢當前目錄下字尾為bak的檔案,並把它們刪除,分號在Bash中有其他意思,因此此處;需要加\轉義

PS:find是從硬碟去檢索檔案,因此效率並不高,但是find的功能是最廣,最強大的

Locate

locate  [option]  [option

此命令和find / -name類似,但是它是從資料庫檔案(Linux將所有的檔案都記錄在一個資料庫檔案,但並不實時更新,一般一天更新一次)中查詢指定檔案,因此效率比find快得多

引數:

-i  忽略大小寫

-r  使用正規表示式做匹配條件

例:locate demo.php


總結

一、5個查詢命令中,find、locate、whereis是用來查詢具體的檔案,which、type是用來查詢命令(which也相當於查詢檔案,但是隻查詢命令位置)

二、whereis只查詢3種型別的檔案:二進位制檔案、說明檔案、原始碼檔案

三、whereis和locate都是從資料庫檔案查詢,所以效率最高

四、使用優先順序:

          1、區分命令,使用type

          2、查詢命令位置,使用which、whereis、type(優先使用whereis)

          3、通過檔名稱查詢,優先使用locate,找不到時,updatedb

          4、其他查詢條件、或者因資料庫檔案未更新,使用whereis、locate查詢不到時,使用find

相關文章