在使用Linux系統(tǒng)時馆衔,有時會因?yàn)槲募?chuàng)建時間很久修己,而記不得全全名给郊,只能記得模糊的幾個關(guān)鍵字時,就可以使用文件查找命令來進(jìn)行快速搜索彪笼。Linux提供最常用的搜索方有兩個工具locate與find钻注。不過在日常中還是使用find比較多,因?yàn)樗哂袝r效性配猫。
一幅恋、 locate
locate的搜索是基于數(shù)據(jù)庫的,數(shù)據(jù)庫會在系統(tǒng)空閑時每天更新一次章姓。locate是非時效性的(新文件沒有加入數(shù)據(jù)庫導(dǎo)致不能被查找到)佳遣。
1. 特點(diǎn)
可以模糊查找、查找速度快凡伊、搜索匹配的是文件的全路徑零渐,不只是文件名
2. 手動更新數(shù)據(jù)庫
手動更新會占用系統(tǒng)資源,所以要在系統(tǒng)空閑時進(jìn)行更新
[root@centos7 app]# updatedb
4. 搜索
[root@centos7 app]# locate -i aubin # -i不區(qū)分大小寫
[root@centos7 app]# locate -i aubin -n 10 # -n 只顯示前幾個
[root@centos7 app]# locate -r '\.conf$' # -r 支持正則表達(dá)式
二系忙、 find
1. 特點(diǎn)
查找速度慢诵盼、精確查找、具有時效性
2. 命令格式
find <路徑> <選項(xiàng)> <動作>
3. 命令選項(xiàng)
- 查找深度银还,搜索的目錄層級
[root@centos7 app]# find -maxdepth
[root@centos7 app]# find -mindepth
[root@centos7 app]# find / -name aubin
- 指定目錄/文件名
支持使用glob*, ?, [], [^]
( [ ]為匹配單個字符的范圍)
[root@centos7 app]# find / -name aubin
[root@centos7 app]# find / -name a?c
/sys/fs/selinux/avc
[root@centos7 app]# find / -name [etc]
/var/lib/yum/yumdb/t
/var/lib/yum/yumdb/e
/var/lib/yum/yumdb/c
#
-inum n 按inode號查找
-samefile filename 與filename文件相同inode號的文件
-links n 鏈接數(shù)為n的文件
-regex "PATTERN":以PATTERN匹配整個文件路徑字
- 查找條件
-user USERNAME #查找屬主為指定用戶(UID)的文件
-group GRPNAME #查找屬組為指定組(GID)的文件
-uid UserID #查找屬主為指定的UID號的文件
-gid GroupID #查找屬組為指定的GID號的文件
-nouser #查找沒有屬主的文件
-nogroup #查找沒有屬組的文件
-type
f: 普通文件
d: 目錄文件
l: 符號鏈接文件
s:套接字文件
b: 塊設(shè)備文件
c: 字符設(shè)備文件
p: 管道文件
- 或與非
與:-a
或:-o
非:-not, !
- 或的實(shí)際應(yīng)用
在使用-o 時如果后面要跟動作风宁,要加括號,如下面例子蛹疯,否則的話只會輸出靠近ls的搜索結(jié)果
[root@centos7 app]# find / -user li -o -user aubin -exec ls -al {} \;
[root@centos7 app]# find / \( -user li -o -user aubin \) -exec ls -al {} \;
- 按大小查找
-size nk #(n-1k,nk]
-size 10k #(9k,10k]
-size -10k #[0k,10k]
-size +10k #(10k,無窮)
#
-size 1024k #(1023k,1024k]
-size 1M #(0M,1M]
- 按時間戳排序
#以天為單位
-atime
-mtime
-ctime
[root@centos7 app]# find /app/ -atime 1
[root@centos7 app]# find /app/ -atime +1
[root@centos7 app]# find /app/ -atime -1
#
#以分鐘為單位
-amin -mmin -cmin