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