文件搜索除了find還有幾個命令
find是在你需要索引的範圍查找,是在硬盤查找,速度太慢
有個快速查找命令
locate:
命令所在路徑:/usr/bin/locate
執行權限:所用用戶
功能描述:在文件資料庫中查找文件
範例:$local init
而locate是在文件資料庫中查找,文件資料庫會定期更新,找不是在硬盤找,而是在資料庫中查找。速度非常快。
(這裏我想到之前學過的I/O複用,select和epoll的使用效率,當使用select時和find一樣,當你朋友來你宿舍找你並不知道你住在哪裏,這時候宿舍阿姨就會帶你到宿舍區一個 房間一個房間查找。而epoll和locate一樣,宿舍大媽先有一個記錄本記錄了同學住的房間號,然後直接在記錄本上查找號,便可直接找到同學)
locate文件資料庫存放地址:
但是如果沒有更新的話,用locate不能查到
新建一個文件hpyhaha,由於資料庫沒有更新,所以用locate不能查到,但是用find便可以查到
不過我們可以用updatedb更新數據庫
但是如果新建一個文件放在tmp目錄下,即使用updatedb後也無法找到文件,因爲不在locate範圍內,所以locate經常用於系統文件的查找。
locate -i 文件名:
-i:表示不區分大小寫
which:
命令所在路徑:/usr/bin/which
執行權限:所有用戶
功能描述:搜索命令所在目錄及別名信息
範例:$ which ls
whereis:
命令所在路徑:/usr/bin/whereis
執行權限:所有用戶
功能描述:搜索命令所在目錄及幫助文檔路徑
範例:$whereis ls
(幫助文檔路徑文檔中1表示命令的幫助,5表示配置文檔的幫助)
grep:
命令所在路徑:/bin/grep
執行權限:所有用戶
語法:grep -iv [指定字串][文件]
功能描述:在文件中搜尋字串匹配的並行輸出
-i 不區分大小寫
-v 排除指定字串
範例:$ grep stop /etc/init/acpid.conf
查找/etc/init/acpid.conf文件裏面的stop
grep -v :排除指定字串
比如排除註釋行
範例:$ grep -v ^# /etc/init/acpid.conf
(^符號表示從頭開始刪除#號行,避免註釋行在中間,誤刪有效行)
(在文件內容裏面查找)