《鳥哥的linux私房菜 基礎篇》第七章讀書筆記(下)--文檔搜尋which,whereis,locate,find

which [-a] command  尋找執行檔(command即爲命令)

-a 將所有PATH目錄中可以找到的指令均列出,而不知第一個被找到的指令名稱。

登陸的身份不同,則PATH的定義不同,那麼利用which查找出來的就可能不一樣

 

cd是bash內建指令,which [-a] cd找不到。?

 

檔案檔名的搜尋:

通常先使用whereis和locate,如果找不到,就用find,因爲find速度慢,且耗硬盤

 

whereis [-bmsu] 檔案或目錄名

-b 只找binary格式的檔案

-m 只找在說明文件manual路徑下的檔案

-s  只找source來源檔案

-u  搜尋不在上述三個項目當中的其他特殊檔案

 

因爲whereis不受身份的限制,所以,利用which找不到的也許可以用whereis找到。

 

whereis和locate搜尋比find更快的原因:見書。

 

locate [-ir] keyword  找出與keyword相關的檔名

-i  忽略大小寫

-r  後面可接正規表示法的顯示錶示

 

Locate尋找的數據是由已建立的數據庫/var/lib/mlocate裏面的數據所搜尋到的,由於數據庫更新不是特別及時,因此會存在延遲問題,導致有些文檔搜不到。

不過可以先更新數據庫:直接輸入updatedb命令即可

 

find [PATH] [option] [action]   (find後可接多個目錄來進行搜尋,而且本身還會搜尋次目錄

①與實踐有關的選項:

-mtime n:n爲數字,意爲在n天之前的“一天之內”被更改過內容的文檔。

-mtime +n:列出在n天之內(含n天本身)被更改過內容的檔案檔名

-newer file:file爲一個存在的檔案,列出比file還要新的檔案檔名

n = 4時,各個參數的意義如下:

 

②與使用者戒組名有關的參數:

   -uidn :n 爲數字,這個數字是用戶的賬號 ID,亦即 UID ,這個 UID 是記錄

在/etc/passwd 裏面與賬號名稱對應的數字。這方面我們會在第四篇介紹。

   -gidn :n 爲數字,這個數字是組名的 ID,亦即 GID,這個 GID 記錄在/etc/group,相關癿介紹我們會第四篇說明~

  -user name :name 爲使用者賬號名稱喔!例如 dmtsai 

  -group name:name 爲組名喔,例如 users ;

  -nouser    :尋找檔案的擁有者不存在 /etc/passwd 的人!

   -nogroup  :尋找檔案癿擁有羣組不存在亍 /etc/group 癿檔案!

                當你自行安裝軟件時,很可能該軟件的屬性當中並沒有檔案擁有者,

                這是可能 !在這個時候,就可以使用 -nouser 與 -nogroup 搜尋

 

find /home –user vbird   找出該用戶在系統中的所有檔案

 

③與檔案權限及名稱有關的參數:

   -name filename:搜尋文件名爲 filename 的檔案; finename,如果記得不清楚,還可以用通配符來尋找,比如find /etc –name ‘*httpd*’ ,/etc下包含httpd的檔案

  -size [+-]SIZE:搜尋比 SIZE 還要大(+)或小(-)癿檔案。這個 SIZE 的規格有:

                   c: 代表 byte, k: 代表 1024bytes。所以,要找比 50KB 還要大的檔案,就是『 -size +50k 』

      -type TYPE  :搜尋檔案的類型爲 TYPE 的,類型主要有:一般正規檔案 (f), 裝置檔案 (b, c), 目錄 (d), 連結檔 (l), socket (s), 及 FIFO (p) 等屬性。

  -perm mode  :搜尋檔案權限“剛好等於” mode 的檔案,這個 mode 爲類似 chmod

                的屬性值,例如, -rwsr-xr-x的屬性爲 4755 !

  -perm -mode :搜尋檔案權限『必須要全部囊括 mode 的權限』的檔案

  -perm +mod:搜尋檔案權限“包含任一mode的權限”的檔案。只要權限在其中即可

 

④額外進行的動作:

-exec command: command爲其他命令,-exec後面可再接額外的指令來處理搜尋到的。利用這個參數的格式注意,將找到的文檔使用ls –l列出來:find \ -perm +7000 –exec ls –l {} \; {}表示由find找到的內容,-exec到\;表示額外動作的開始於結束。加粗部分就是額外動作

-print:將結果打印到屏幕上,預設動作

 

找出/etc下,檔案大小介於50K到60K之間的檔案,並且將全線完整的列出(ls -l):

find /etc –size +50K –a –size-60K –exec ls –l {} \;

-a表示and的意思, -o就表示or的意思

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