linux中文件搜索命令(whereis,locate,which,find)

linux中的文件搜索命令是最常用的命令之一,然而我卻一直分不清楚這四個命令具體的區別有哪些,經過查看一些資料纔算弄明白一點。

1、find(精而細):直接從磁盤中搜索文件名稱
命令所在路徑:/bin/find
執行權限:所有用戶
語法:find [搜索範圍] [匹配條件]
功能:搜索文件
eg:
find /etc -name init
在etc目錄下查找名爲init的文件,-iname 不區分大小寫

find / -size +204800
在根目錄下查找大於100MB的文件,+n 大於 -n 小於 n 等於,此處的單位爲’數據塊‘,1數據塊爲512字節=0.5K

find /home -user tom
在home目錄下查找所有者爲tom的文件,-group 根據所屬組查找

find /etc -cmin 5
在etc下查找5分鐘內被修改過屬性的文件和目錄,-amin 訪問時間 access,-cmin 文件屬性(用ls -l能查看到的) change,-mmin 文件內容 modify

find /etc -size +163840 -a -size -204800
在etc目錄下查找大於80MB小於100MB的文件,-a 兩個條件同時滿足,-o 兩個條件滿足任意一個即可

find /etc -name inittab -exec ls -l {} \;
在etc下查找inittab文件並顯示其詳細信息
-exec/-ok 命令 {} \; 對搜索結果執行操作
-type 根據文件類型查找      f 文件       d 目錄      l 軟鏈接文件
-inum 根據i節點查找文件

2、locate(快而全,使用updatedb更新數據庫):從文件資料庫中查找所需文件
命令所在路徑:/usr/bin/locate
執行權限:所有用戶
語法:locate 文件名 -i 不區分大小寫
因爲這是直接在文件庫中查找,而不用遍歷每個盤,所以速度比起find快很多
注意:文件資料庫的信息是定期更新的,所以有可能當你查找某個最新的文件時,沒有結果
          不過可以使用updatedb命令來手動更新文件庫
          另外,如果文件存放在/tmp臨時目錄下,是不會別收錄到文件庫中的,所以也不會被locate命令搜索到

3、which(小而精):在PATH變量指定的路徑中搜索某個系統命令的位置,並返回第一個搜素結果
命令所在路徑:/usr/bin/which
執行權限:所有用戶
語法:which 命令
eg:which passwd     返回:/usr/bin/passwd

4、whereis(簡單快速):whereis命令只能用於程序名的搜索,而且只搜索二進制文件(參數 -b)、man說明文件(參數 -m)和源代碼文件(參數 -s),如果省略參數,則全部返回
命令所在路徑:/usr/bin/whereis
執行權限:所有用戶
語法:whereis [文件名]






發佈了48 篇原創文章 · 獲贊 5 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章