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的意思