文件查找命令locate與find的對比分析
一、locate
1、locate命令是用來文件查找的命令,依賴于事先構建的索引。而索引的更新并不是實時的,而是每次開機啟動或者管理員手動更新。因為是使用事先建立的索引庫進行檢索,所以會有以下特點:
1)查找速度快
2)模糊查找
3)非實時查找
4)搜索的是文件的全路徑,不僅僅是文件名
5)可能之搜索用戶具備讀取和執行權限的目錄
2、Locate常用命令的選項
1)locate –i忽略大小寫進行搜索。
2)locate -n#只列出搜索結果的前#個;例:locate -n3 app 即只列出文件名位app的前三個文件。
3)locate -r 表示輸入的變量支持正則表達式;例:locate -r “^/etc/.*\.conf$”即表示搜索/etc/文件夾下以”.conf”結尾的文件。
二、find
1、 find是一個實時查找工具,它是通過將硬盤上的所有文件都掃描一遍來進行檢索的,所以會有以下一些特點:
1)查找速度略慢
2)能精確查找
3)能實時查找
4)可能只搜索用戶具備讀取和執行權限的目錄
2、find命令常用的選項
1)find -maxdepth level 指定最大搜索層數為幾層。例:find /etc/ -maxdepth 2 f1 即搜索/etc/文件夾下2層中名為f1的文件
2)find -mindepth level 指定最小搜索層數為幾層。
3)find -name “文件名稱” “文件名稱”支持通配符進行表達。
4)find -iname 搜索的文件忽略大小寫進行搜索。
5)find -inum n 指定文件的節點編號進行搜索;例:find /data -inum 69 即表達為搜索/data/目錄下文件節點編號為69的文件。
6)find -samefile 查找相同文件節點編號的文件(即搜索硬鏈接)
7)find -links n 按照鏈接數進行查找;例:find /data/ -links 2 即為查找/data/目錄下鏈接數為2的文件。
8)find -regex “文件名稱” “文件名稱”支持正則表達式進行表達。
9)find -user 按照所有者查找文件;例:find /data/ -user ren 即表示為在/data/目錄下搜索所有者為ren用戶的文件。
10)find -group 按照所屬組查找文件。
11)find -nouser 尋找沒有所有者的文件。
12)find -nogroup 尋找沒有所屬組的文件。
13)find -uid 按照uid進行查找。
14)find -gid 按照gid進行查找。
15)find -o 或者;例:find /data/ -nouser -o -nogroup 即表示為在/data/目錄下搜索沒有所有者或者沒有所屬組的文件。
16)find -type d 可以用來尋找文件夾。
17)find -type l 可以用來尋找軟鏈接。
18)find -size 按照文件大小來查找;
例:find -size 5M 即為搜索(0,5M]范圍內的文件;
find -size -5M 即為搜索[0,4M]范圍內的文件;
find -size +5M 即為搜索(5,∞)范圍內的文件.
19) find -perm xxx 按照權限大小來搜索;例:find -prem 666即為搜索文件權限為666的文件。
find -perm -666 即為搜索文件權限包含666的文件;
find -perm /666 即為只要三個權限擁有者其中一個人的權限為6就在查找范圍。
20)find -ls 以列表的形式顯示輸出結果。
21)find -delete 刪除搜索到的文件。
22)find -fls “文件 ” =find -ls > “文件” 將“文件”中的信息輸入到搜索的文件中。
本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/95960