文件的搜索

 本文目錄:

  1. which --搜索二進制可執行文件和別名(alias) 
  2. whereis 
  3. locate 
  4. find 
  1. 1、which搜索對象:二進制可執行文件和別名(alias) 
  2.    which搜索範圍:which是根據『PATH』這個環境變量所規範的路徑,去搜尋『運行檔』的檔名 
  3.  which搜索使用格式:which 後面接的是『完整檔名』 

  4. 2、whereis搜索對象:【沒有參數:任何格式文件 
  5.                                       -b:二進制可執行文件 
  6.                                       -B 只在設置的目錄下查找二進制文件 
  7.                                      -m:文件如何使用的手冊文件 
  8.                                      -M 只在設置的目錄下查找說明文件  
  9.                                      -s 只查找原始代碼文件  
  10.                                      -S 只在設置的目錄下查找原始代碼文件(源文件)                 
  11.                                      -u 查找不包含指定類型的文件 
  12.                                      -f 不顯示文件名前的路徑名稱 】
  13.  
  14.  whereis 搜索範圍:whereis 搜尋在數據庫裏面的數據,搜索範圍比which要大。 
  15. whereis搜索使用格式:whereis後面接的是『完整檔名』 

  16. 3、locate搜索使用格式:locate 後面接的是『文件的部分名稱』 
  17.                                     
  18.   【-u 建立數據庫,由根目錄開始  
  19.                                        -U 建立數據庫,可以指定開始的位置  
  20.                                       -e 將排除在尋找的範圍之外  
  21.                                       -f 將特定的檔案系統排除在外  
  22.                                       -q 安靜模式,不會顯示任何錯誤訊息  
  23.                                       -n 至多顯示n個輸出  
  24.                                        -r 使用正規運算式 做尋找的條件  
  25.                                        -o 指定數據庫存的名稱  
  26.                                      -d 指定數據庫的路徑  
  27.                                      -h 顯示輔助訊息  
  28.                                       -v 顯示更多的訊息  
  29.                                     -V 顯示程序的版本訊息 】 

  30. locate 和whereis差不多,只不過locate可以進行模糊查詢,搜尋到包含文件名的所有文件,所以當你只記得一部分文件名時,可以用這個來搜尋。
  31.  
    1. 使用 whereis 或者是底下要說的 locate 時,都會以『已創建的數據庫 /var/lib/mlocate/』文件的內容爲準, 因此,有的時後你還會發現使用這兩個運行檔時,會找到已經被殺掉的文件! 而且也找不到最新的剛剛創建的文件呢! 
    2.  
    3. 原因:因爲他是經由數據庫來搜尋的,而數據庫的創建默認是在每天運行一次 (每個 distribution 都不同,CentOS 5.x 是每天升級數據庫一次!),所以當你新創建起來的文件, 卻還在數據庫升級之前搜尋該文件,那麼 locate 會告訴你『找不到!』呵呵!因爲必須要升級數據庫呀!升級 locate 數據庫的方法非常簡單,直接輸入『 updatedb 』就可以了! updatedb 命令會去讀取 /etc/updatedb.conf 這個配置檔的配置,然後再去硬盤裏面進行搜尋檔名的動作, 最後就升級整個數據庫文件羅!因爲 updatedb 會去搜尋硬盤,所以當你運行 updatedb 時,可能會等待數分鐘的時間喔! 
    4.         (1)updatedb:根據 /etc/updatedb.conf 的配置去搜尋系統硬盤內的檔名,並升級 /var/lib/mlocate 內的數據庫文件; 
    5.         (2)locate:依據 /var/lib/mlocate 內的數據庫記載,找出使用者輸入的關鍵字檔名。 
  32.   4、find搜索範圍:find遍歷當前目錄甚至於整個文件系統來查找某些文件或目錄
  33. find搜索使用格式:find path -name filename(find / -name passwd,find /etc -name '*httpd*') 

 which --搜索二進制可執行文件和別名(alias)


 

 

  1. -a:可以列出所有PATH目錄下存在的文件,而不僅僅是找到的第一個文件,默認只顯示找到的第一個文件。 
  2. [root@rhel6 mlocate]# which find 
  3. /bin/find 
  4. [root@rhel6 mlocate]# which -a find 
  5. /bin/find 
  6. /usr/bin/find 
  7.  
  8. 注意:which只會搜尋可執行文件,普通文件即使在$PATH變量路徑中,也是查找不到的。 

最後一個範例最有趣,怎麼 cd 這個常用的命令竟然找不到啊!爲什麼呢?這是因爲 cd 是『bash 內建的命令』啦! 但是 which 默認是找 PATH 內所規範的目錄,所以當然一定找不到的啊!那怎辦?沒關係!我們可以透過 type 這個命令喔!

 whereis


 

 locate


 

  1. -u 建立數據庫,由根目錄開始    
  2. -U 建立數據庫,可以指定開始的位置    
  3. -e 將排除在尋找的範圍之外    
  4. -f 將特定的檔案系統排除在外    
  5. -q 安靜模式,不會顯示任何錯誤訊息    
  6. -n 至多顯示n個輸出    
  7. -r 使用正規運算式 做尋找的條件    
  8. -o 指定數據庫存的名稱    
  9. -d 指定數據庫的路徑    
  10. -h 顯示輔助訊息    
  11. -v 顯示更多的訊息    
  12. -V 顯示程序的版本訊息    

 find


 

  1. find命令可以使用混合查找的方法 
  2.  
  3. 例如我們想在/tmp目錄中查找大於100000000字節並且在48小時內修改的某個文件,我們可以使用-and 來把兩個查找選項鍊接起來組合成一個混合的查找方式: 
  4.             find /tmp -size +10000000c -and -mtime +2 

  1. -prune  不在當前指定的目錄中查找  
  2. -depth  在查找文件時,首先查找當前目錄中的文件,然後再在其子目錄中查找  
  3. -mount  在查找文件時不跨越文件系統mount點  
  4. -follow  如果find命令遇到符號鏈接文件,就跟蹤到鏈接所指向的文件  
  5. -cpio  對匹配的文件使用cpio命令,就將這些文件備份到磁盤設備中   -amin n 查找系統中最後N分鐘訪問的文件 
  6. -empty 查找系統中空白的文件,或空白的文件目錄,或目錄中沒有子目錄的文件夾  
  7. -false 查找系統中總是錯誤的文件   
  8. -fstype type查找系統中存在於指定文件系統的文件,例如:ext2 .  

本文轉自:http://vbird.dic.ksu.edu.tw/linux_basic/0220filemanager_5.php

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章