本文目錄:
- 1、which搜索對象:二進制可執行文件和別名(alias)
- which搜索範圍:which是根據『PATH』這個環境變量所規範的路徑,去搜尋『運行檔』的檔名
- which搜索使用格式:which 後面接的是『完整檔名』
- 2、whereis搜索對象:【沒有參數:任何格式文件
- -b:二進制可執行文件
- -B 只在設置的目錄下查找二進制文件
- -m:文件如何使用的手冊文件
- -M 只在設置的目錄下查找說明文件
- -s 只查找原始代碼文件
- -S 只在設置的目錄下查找原始代碼文件(源文件)
- -u 查找不包含指定類型的文件
- -f 不顯示文件名前的路徑名稱 】
- whereis 搜索範圍:whereis 搜尋在數據庫裏面的數據,搜索範圍比which要大。
- whereis搜索使用格式:whereis後面接的是『完整檔名』
- 3、locate搜索使用格式:locate 後面接的是『文件的部分名稱』
- 【-u 建立數據庫,由根目錄開始
- -U 建立數據庫,可以指定開始的位置
- -e 將排除在尋找的範圍之外
- -f 將特定的檔案系統排除在外
- -q 安靜模式,不會顯示任何錯誤訊息
- -n 至多顯示n個輸出
- -r 使用正規運算式 做尋找的條件
- -o 指定數據庫存的名稱
- -d 指定數據庫的路徑
- -h 顯示輔助訊息
- -v 顯示更多的訊息
- -V 顯示程序的版本訊息 】
- locate 和whereis差不多,只不過locate可以進行模糊查詢,搜尋到包含文件名的所有文件,所以當你只記得一部分文件名時,可以用這個來搜尋。
- 使用 whereis 或者是底下要說的 locate 時,都會以『已創建的數據庫 /var/lib/mlocate/』文件的內容爲準, 因此,有的時後你還會發現使用這兩個運行檔時,會找到已經被殺掉的文件! 而且也找不到最新的剛剛創建的文件呢!
- 原因:因爲他是經由數據庫來搜尋的,而數據庫的創建默認是在每天運行一次 (每個 distribution 都不同,CentOS 5.x 是每天升級數據庫一次!),所以當你新創建起來的文件, 卻還在數據庫升級之前搜尋該文件,那麼 locate 會告訴你『找不到!』呵呵!因爲必須要升級數據庫呀!升級 locate 數據庫的方法非常簡單,直接輸入『 updatedb 』就可以了! updatedb 命令會去讀取 /etc/updatedb.conf 這個配置檔的配置,然後再去硬盤裏面進行搜尋檔名的動作, 最後就升級整個數據庫文件羅!因爲 updatedb 會去搜尋硬盤,所以當你運行 updatedb 時,可能會等待數分鐘的時間喔!
- (1)updatedb:根據 /etc/updatedb.conf 的配置去搜尋系統硬盤內的檔名,並升級 /var/lib/mlocate 內的數據庫文件;
- (2)locate:依據 /var/lib/mlocate 內的數據庫記載,找出使用者輸入的關鍵字檔名。
- 4、find搜索範圍:find遍歷當前目錄甚至於整個文件系統來查找某些文件或目錄
- find搜索使用格式:find path -name filename(find / -name passwd,find /etc -name '*httpd*')
- -a:可以列出所有PATH目錄下存在的文件,而不僅僅是找到的第一個文件,默認只顯示找到的第一個文件。
- [root@rhel6 mlocate]# which find
- /bin/find
- [root@rhel6 mlocate]# which -a find
- /bin/find
- /usr/bin/find
- 注意:which只會搜尋可執行文件,普通文件即使在$PATH變量路徑中,也是查找不到的。
最後一個範例最有趣,怎麼 cd 這個常用的命令竟然找不到啊!爲什麼呢?這是因爲 cd 是『bash 內建的命令』啦! 但是 which 默認是找 PATH 內所規範的目錄,所以當然一定找不到的啊!那怎辦?沒關係!我們可以透過 type 這個命令喔!
- -u 建立數據庫,由根目錄開始
- -U 建立數據庫,可以指定開始的位置
- -e 將排除在尋找的範圍之外
- -f 將特定的檔案系統排除在外
- -q 安靜模式,不會顯示任何錯誤訊息
- -n 至多顯示n個輸出
- -r 使用正規運算式 做尋找的條件
- -o 指定數據庫存的名稱
- -d 指定數據庫的路徑
- -h 顯示輔助訊息
- -v 顯示更多的訊息
- -V 顯示程序的版本訊息
- find命令可以使用混合查找的方法
- 例如我們想在/tmp目錄中查找大於100000000字節並且在48小時內修改的某個文件,我們可以使用-and 來把兩個查找選項鍊接起來組合成一個混合的查找方式:
- find /tmp -size +10000000c -and -mtime +2
- -prune 不在當前指定的目錄中查找
- -depth 在查找文件時,首先查找當前目錄中的文件,然後再在其子目錄中查找
- -mount 在查找文件時不跨越文件系統mount點
- -follow 如果find命令遇到符號鏈接文件,就跟蹤到鏈接所指向的文件
- -cpio 對匹配的文件使用cpio命令,就將這些文件備份到磁盤設備中 -amin n 查找系統中最後N分鐘訪問的文件
- -empty 查找系統中空白的文件,或空白的文件目錄,或目錄中沒有子目錄的文件夾
- -false 查找系統中總是錯誤的文件
- -fstype type查找系統中存在於指定文件系統的文件,例如:ext2 .
本文轉自:http://vbird.dic.ksu.edu.tw/linux_basic/0220filemanager_5.php