Linux 檔案查詢命令

2022-03-27 13:32:24 字數 3295 閱讀 5371

一、簡介查詢檔案的幾個命令:

1、which :查詢可執行檔案的位置

2、whereis:查詢檔案的位置,可以找到可執行命令和man page

3、locate:配合資料庫檢視檔案位置

4、find:實際搜尋磁碟查詢檔案位置

注意:find是在磁碟上遍歷查詢的,很消耗資源,應優先使用whereis和locate命令。

二、區別:

1、which:它是在path變數指定的路徑中查詢指定的檔案,並返回第乙個搜尋結果。即通過which命令,可以檢視到某個系統命令是否存在,以及執行的到底是哪乙個位置的命令。

注意:(1)、通常只會顯示找到的第乙個檔案。如果想顯示所有path目錄下存在的檔案,可以通過引數-a實現,例如# which -a grep

(2)、只能查詢可執行檔案,普通檔案即使在$path中也查詢不到。

(3)、由於which是在$path環境變數裡搜尋檔名的,不同使用者設定的環境變數不同情況下,搜尋結果也不相同。可以通過 echo $path命令檢視當前的環境變數

2、whereis:它和locate都是從資料庫中查詢資料的,因此速度很快。

說明:linux系統預設將系統內的所有檔案都記錄在資料庫檔案 /var/lib/mlocate/mlocate.db 中,但是這個資料庫不是實時更新的,為避免查詢已經刪除的資料或無法查詢新建立的檔案等情況,可以在查詢之前先用updatedb命令生成最新索引庫。

注意:(1)、whereis只能用於程式名的搜尋,搜尋範圍比which大,當有些指令用which找不到時,可以用whereis查詢。

(2)、可以迅速查詢檔案,而且可以提供這個檔案的二進位制可執行檔案、源**檔案和使用手冊頁存放的位置。如果省略引數,則會返回所有資訊。

(3)、如果找不到查詢目標,會返回乙個空字串。

3、locate:和whereis差不多,是從資料庫中查詢資料,但是locate可以搜尋到包含檔名的所有檔案,因此當只記得一部分檔名時,可以使用此命令搜尋。

注意:可以使用-i引數,忽略大小寫

4、find:從磁碟上查詢資料,速度比較慢,但是功能非常強大,通過不同引數可以獲得不同結果。find命令後面還可以同時接多個目錄,用於同時在不同目錄下查詢檔案。

三、find使用方法

1、名稱、型別相關的引數

-name引數可以指定要查詢的檔名

-type引數可以指定要查詢的檔案型別,主要包括:普通檔案(f)、塊裝置檔案(b)、字元裝置檔案(c)、目錄(d)、鏈結檔案(l)、socket(s)、及fifo(p)等。

例如:查詢/bin目錄下名稱為bash的普通檔案

[root@localhost ~]# find /bin -name bash -type f

/bin/bash

2、時間相關引數

(1)、-atime n:將nx24小時記憶體取過的檔案列出來。

(2)、-ctime n:將nx24小時內改變、新增的檔案或目錄列出來。

(3)、-mtime n:將nx24小時內修改過的檔案或目錄列出來

(4)、-newer file:把比file還要新的檔案列出來

說明:n為代表天數的數字,+n表示查詢第n天之前,-n表示查詢從第n天(包括第n天)至今的檔案。

例如:在/usr/bin目錄下查詢建立不到1天的新檔案,或24小時內修改過的檔案

[root@localhost ~]# find /usr/bin/ -type f -mtime -1     

在/bin目錄中查詢最近100天沒有使用過的程式

[root@localhost ~]# find /bin/ -type f -atime +100

在/root目錄中查詢3天之前(不包括第3天)被更改的檔案

[root@localhost ~]# find /root/ -type f -mtime 3

3、使用者相關的引數

(1)、-uid n: n為數字,指使用者賬戶id,即uid

(2)、-gid n:n為數字,指組名id,即gid

(3)、-user name:name為使用者名稱

(4)、-group name:name為組名

(5)、-nouser:尋找檔案的所屬使用者不存在的檔案

(6)、-nogroup:尋找檔案的所屬組不存在的檔案

當自行安裝軟體是,可能該軟體的屬性中沒有檔案的擁有者,此時就可以用-nouser和nogroup來查詢

例如:4、大小、許可權相關引數

(1)、-size  +/-  c/k :搜尋大於或小於指定大小的檔案,+表大於,c表byte,k表kbyte,m表mbyte,g代表gbyte

(2)、-perm mode:搜尋許可權等於指定許可權的檔案

(3)、-perm -mode:搜尋包含許可權

(4)、-perm +mode:搜尋被指定查詢條件所包含的檔案

例1:查詢許可權為-rwxr--r--即0744的檔案,可以使用-perm -0744,但是屬性為-rwsr-xr-x即4755的檔案也會被列出來,因為-rwsr-xr-x的屬性已經包括了-rwxr--r--的屬性了。

例2:查詢許可權為-rwxr-xr-x即0755的檔案,可以使用-perm +755,但是屬性為-rw------的檔案也會被列出來,因為它有-rw...的屬性存在。

例3:在/home下尋找乙個包含特殊許可權的檔案,可以使用-perm +700來實現,因為7表4(suid) + 2(sgid) + 1(sbit),三個特殊許可權全部包含進來了,而+7000的含義在與只要檔案中有4,2,1中的任何乙個,就會列出來,因此這個指令可以列出所有特殊許可權的檔案

5、執行動作

通過find命令可以對查詢到的結果進一步處理,只要在-exec後面再接額外的指令即可。

例如:用ls形式顯示find所查詢的結果ru

# find ./ -name 'file*' -exec ls -l {} \;

這裡:-exec表示後面還可以接額外的命令,{}表示exec前面的find部分查詢結果,\;表exec所接額外命令的結束,而exec表額外命令的開始。這裡其實是執行ls -l {},即將find的結果以ls -l輸出

注意:exec後面不能接別名alias,如不能使用ll命令代表ls -l

linux檔案查詢命令

linux 檔案查詢命令 1 which 可執行檔名 查詢可執行檔案命令 顯示乙個可執行檔案的完整路徑 按照alias path的順序查詢 例 which lmcbbat 2 whereis 可執行檔名 搜尋乙個可執行工具及其相關配置,幫助 例 whereis lmcbbat 3 slocate l...

linux 檔案查詢命令

linux which命令用於查詢檔案。which指令會在環境變數 path設定的目錄裡查詢符合條件的檔案。語法 which 檔案.引數 linux find命令用來在 指定目錄下查詢 檔案。任何位於引數之前的字串都將被視為欲查詢的目錄名。如果使用該命令時,不設定任何引數,則find命令將在當前目錄...

linux 檔案查詢命令

which是根據使用者設定的path變數內的目錄去查詢可執行檔案,所以不同使用者查詢到的結果可能不一樣。命令用法 file 檢視檔案型別 ascii data binary which a command 尋找執行檔案 whereis bmsu 檔案或目錄名 查linux系統資料庫 locate i...