Linux中的搜索文件和目錄命令
一、find [搜索范圍][搜索標准] 關鍵字
-name:默認按名稱搜索(文件或者目錄所在的路徑也在搜索范圍之內)
-size:按文件大小搜索
-user:按文件的所有者搜索
①find *z* *是通配符,搜索當前目錄下,所有名稱中包含z的那些文件或者目錄。不加-name,默認是通過-name查找
等同於find -name '*z*' *是通配符,搜索當前目錄下所有的名稱中帶a的文件或目錄,注意,寫上-name時,后面的名稱一定要加上單引號或雙引號,否則會報錯
單引號的地方也可以使用雙引號
②find *.txt *是通配符,搜索當前目錄下所有的.txt文件。不加-name,默認是通過-name查找
等同於 find -name '*.txt' 注意,寫上-name時,后面的名稱一定要加上單引號或雙引號,否則會報錯
③find -size -1k
④find /etc -user zhangsan 搜索/etc目錄下所有的所有者是zhangsan的文件和目錄
二、locate:在整棵目錄樹中搜索文件或者目錄,都是根據名稱搜索,效率高。
locate 與 find 不同: find 是去硬盤找,locate 只在 /var/lib/slocate 資料庫中找。
locate 的速度比 find 快,它並不是真的查找,而是查數據庫,一般文件數據庫在 /var/lib/slocate/slocate.db 中,所以 locate 的查找並不是實時的,而是以數據庫的更新為准。一般是系統自己維護,也可以手工升級數據庫 ,命令為:updatedb。默認情況下 updatedb 每天執行一次。所以一般在使用locate之前要先同步下數據庫(updatedb)。
雖然locate查找的快,但是updatedb占用的時間較長,所以locate一般不常用。
updatedb
locate 關鍵字
updatedb
locate *.txt
locate testDir
三、搜索過濾命令,在前一個搜索命令的結果中進行按名稱進一步過濾:
搜索命令 |grep [選項] 過濾條件 搜索命令包括 find、locate
查看命令 |grep [選項] 過濾條件 查看命令包括cat、ls 等
選項:
-i 忽略大小寫,i指的是 ignore
-n 顯示行號,n指的是number
-in 忽略大小寫且顯示行號
①find *.txt|grep new 搜索當前目錄下,所有名稱包含new的.txt文件
find /etc -size -5k|grep firefox
②cat t1.txt|grep shanxi
③cat t1.txt|grep -in shanxi 查找t1.txt文件中的shanxi,-i是忽略大小寫,-in是忽略大小寫且顯示所在行號
④ls -al|grep new 查找文件或目錄名中包含new的