Linux中的文件搜索 locate,find,grep ,whereis和which命令的使用
1.文件搜索locate
Linux locate命令用于查找符合條件的文檔,它會(huì)去保存文檔和目錄名稱的數(shù)據(jù)庫(kù)mlocate內(nèi),查找合乎范本樣式條件的文檔或目錄。一般情況我們只需要輸入查找指定文件名字就可以。(locate只能搜索文件名)
locate命令和find -name功能差不多,但是比f(wàn)ind搜索要快。因?yàn)閒ind命令查找的是具體目錄文件,而locate搜索的是一個(gè)數(shù)據(jù)庫(kù)/var/lib/mlocate/mlocate.db,這個(gè)數(shù)據(jù)庫(kù)中存有本地所有的文件信息,該數(shù)據(jù)庫(kù)是Linux自動(dòng)創(chuàng)建并每天自動(dòng)更新維護(hù)。相關(guān)的配置信息在/etx/updatedb.conf,定時(shí)任務(wù)信息在/etc/cron.daily/mlocate。
但對(duì)于剛建立的文件,使用該命令進(jìn)行查找將會(huì)搜索不到所創(chuàng)建的文件,如果想使剛創(chuàng)建的文件被locate命令搜索到,可以使用updatedb命令,更新mlocate數(shù)據(jù)庫(kù),之后在使用locate命令才能搜索到,否則要等到第二天才能搜索到該文件,該后臺(tái)數(shù)據(jù)庫(kù)默認(rèn)一天更新一次。
命令格式:
locate 參數(shù) 文件名命令參數(shù):
- -e 將排除在尋找的范圍之外。
- -1 如果 是 1.則啟動(dòng)安全模式。在安全模式下,使用者不會(huì)看到權(quán)限無(wú)法看到 的檔案。這會(huì)始速度減慢,因?yàn)?locate 必須至實(shí)際的檔案系統(tǒng)中取得檔案的 權(quán)限資料。
- -f 將特定的檔案系統(tǒng)排除在外,例如我們沒有到理要把 proc 檔案系統(tǒng)中的檔案 放在資料庫(kù)中。
- -q 安靜模式,不會(huì)顯示任何錯(cuò)誤訊息。
- -n 至多顯示 n個(gè)輸出。
- -r 使用正規(guī)運(yùn)算式 做尋找的條件。
- -o 指定資料庫(kù)存的名稱。
- d 指定資料庫(kù)的路徑
- -h 顯示輔助訊息
- -V 顯示程式的版本訊息
舉例:
查找指定文件名字:locate 文件名
查找和pwd相關(guān)的所有文件,只顯示5條數(shù)目
搜索etc目錄下所有以sh開頭的文件
忽略大小寫
更新數(shù)據(jù)庫(kù)
updatedb2.文件名搜索find命令
語(yǔ)法格式:
find path -option [ -print ] [ -exec -ok command ] {} \;常用參數(shù):
- -name filename #查找名為filename的文件
- -perm #按執(zhí)行權(quán)限來(lái)查找
- -user username #按文件屬主來(lái)查找
- -group groupname #按組來(lái)查找
- -mtime -n +n #按文件更改時(shí)間來(lái)查找文件,-n指n天以內(nèi),+n指n天以前
- -atime -n +n #按文件訪問(wèn)時(shí)間來(lái)查找文件,-n指n天以內(nèi),+n指n天以前
- -ctime -n +n #按文件創(chuàng)建時(shí)間來(lái)查找文件,-n指n天以內(nèi),+n指n天以前
- -nogroup #查無(wú)有效屬組的文件,即文件的屬組在/etc/groups中不存在
- -nouser #查無(wú)有效屬主的文件,即文件的屬主在/etc/passwd中不存
- -type b/d/c/p/l/f #查是塊設(shè)備、目錄、字符設(shè)備、管道、符號(hào)鏈接、普通文件
- -size n[c] #查長(zhǎng)度為n塊[或n字節(jié)]的文件
- -mount #查文件時(shí)不跨越文件系統(tǒng)mount點(diǎn)
- -follow #如果遇到符號(hào)鏈接文件,就跟蹤鏈接所指的文件
- -prune #忽略某個(gè)目錄
舉例:
查找某一個(gè)文件
一般使用find命令搜索文件名時(shí),可以使用通配符匹配(通配符是完全匹配)。
- 表示匹配任意內(nèi)容;
- ? 表示匹配任意一個(gè)字符;
- [] 表示匹配任意一個(gè)中括號(hào)內(nèi)的字符;
查找以cu 開頭的文件
find ./ -name "cu*"查找文件不區(qū)分大小寫
find /root -iname 文件名查找 目錄下文件類型是目錄 (f表示文件,d表示目錄,l表示軟鏈接)
find /home -type d在 /etc 目錄下查找5 分鐘內(nèi)被修改過(guò)屬性的文件和目錄
find /etc -cmin -5查大于512k的文件
find /home -size +512k查小于512k的文件
find /home -size -512k在根目錄下查找大于 100M 的文件(+n 表示大于,-n 表示小于,n 表示等于)
1 數(shù)據(jù)塊 == 512 字節(jié) 0.5KB,也就是1KB等于2數(shù)據(jù)塊 100MB == 102400KB204800數(shù)據(jù)塊
find / -size +204800查硬連接數(shù)大于2的文件或目錄
find /home -links +2查權(quán)限為700的文件或目錄
find /home -perm 0700查找在系統(tǒng)中最后10分鐘訪問(wèn)的文件
find / -amin -10查找在系統(tǒng)中最后48小時(shí)訪問(wèn)的文件
find / -atime -2查找在系統(tǒng)中為空的文件或者文件夾
find / -empty查找在系統(tǒng)中最后5分鐘里修改過(guò)的文件
find / -mmin -5查找在系統(tǒng)中最后24小時(shí)里修改過(guò)的文件
find / -mtime -13.grep命令
Linux系統(tǒng)中g(shù)rep命令是一種強(qiáng)大的文本搜索工具,它能使用正則表達(dá)式搜索文本,并把匹 配的行打印出來(lái)。grep全稱是Global Regular Expression Print,表示全局正則表達(dá)式版本,它的使用權(quán)限是所有用戶。
格式:
grep [選項(xiàng)] [文件]常用參數(shù):
- -n:顯示匹配行及 行號(hào)。
- -i 表示忽略大小寫;
- -v 表示排除指定字符串;
- -b 表示將可執(zhí)行文件(binary)當(dāng)作文本文件(text)來(lái)搜索;
- -c 表示僅顯示找到的行數(shù);
- -v 表示反向選擇—僅列出沒有“關(guān)鍵詞”的行;
- –color=auto :可以將找到的關(guān)鍵詞部分加上顏色的顯示。
- -A n:顯示匹配到的字符串所在的行及其后n行,after
- -B n:顯示匹配到的字符串所在的行及其前n行,before
- -C n:顯示匹配到的字符串所在的行及其前后各n行,context
顯示匹配行及 行號(hào)
僅顯示找到的行數(shù)
顯示所有以d開頭的文件中包含 test的行
在當(dāng)前目錄中,查找后綴有 file 字樣的文件中包含 test 字符串的文件
grep 'test' *file以遞歸的方式查找符合條件的文件
例如,查找指定目錄/etc/acpi,及其子目錄(如果存在子目錄的話)下所有文件中包含字符串"update"的文件,并打印出該字符串所在行的內(nèi)容,
grep -r update /etc/acpi顯示匹配到的字符串所在的行及其后n行
顯示匹配到的字符串所在的行及其前n行
4.which 命令
which和whereis命令都是Linux操作系統(tǒng)下查找可執(zhí)行文件路徑的命令。
which 命令的原理:在PATH變量指定的路徑中,搜索某個(gè)系統(tǒng)命令的位置,并且返回第一個(gè)搜索結(jié)果。也就是說(shuō),使用which命令,就可以看到某個(gè)系統(tǒng)命令是否存在,以及執(zhí)行的到底是哪一個(gè)位置的命令。
which 查找的可執(zhí)行文件,必須是要在 PATH 下的可執(zhí)行文件,而不能是沒有加入 PATH 的可執(zhí)行文件,即使他就是可執(zhí)行文件,但是沒有加入到系統(tǒng)搜索路徑,他仍然無(wú)法被 which 發(fā)現(xiàn)。
5.whereis命令
Linux whereis命令用于查找文件。
該指令會(huì)在特定目錄中查找符合條件的文件,可以用來(lái)查找二進(jìn)制(命令)、源文件、man文件。與which不同的是這條命令可以是通過(guò)文件索引數(shù)據(jù)庫(kù)而非PATH來(lái)查找的,所以查找的面比which要廣,一般文件的定位需使用locate命令。
常用參數(shù):
- -b 只查找二進(jìn)制文件。
- -B<目錄> 只在設(shè)置的目錄下查找二進(jìn)制文件。
- -f 不顯示文件名前的路徑名稱。
- -m 只查找說(shuō)明文件。
- -M<目錄> 只在設(shè)置的目錄下查找說(shuō)明文件。
- -s 只查找原始代碼文件。
- -S<目錄> 只在設(shè)置的目錄下查找原始代碼文件。
- -u 查找不包含指定類型的文件。
舉例:
使用指令"whereis"查看指令"bash"的位置,輸入如下命令:
注意:以上輸出信息從左至右分別為查詢的程序名、bash路徑、bash的man 手冊(cè)頁(yè)路徑。
顯示bash 命令的二進(jìn)制程序
顯示bash 命令的幫助文件
總結(jié)
以上是生活随笔為你收集整理的Linux中的文件搜索 locate,find,grep ,whereis和which命令的使用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Python 多进程pool.map()
- 下一篇: linux 如何查看应用程序进程号、端口