請關注本頭條號,每天堅持更新原創干貨技術文章。
linux在文件中查找字段命令。如需學習視頻,請在微信搜索公眾號“智傳網優”直接開始自助視頻學習
1. 前言
vim搜索關鍵字。本文主要介紹Linux系統下有哪些全局搜索命令,并講解相關命令的使用方法與日常使用案例。
我們先來了解一下Linux下主要的5個全局搜索的命令工具。他們分別是find,locate,grep,which,whereis
vim查找上一個關鍵詞、其中,find是一個強大實時搜索工具,Linux支持的文件類型它都可以搜索到,locate一般是搜索文件,grep一般是搜索文本文件,which和whereis一般是用于搜索程序相關的文件內容。
2. Linux使用find命令全局搜索文件
find命令在某個目錄下查找。
一般使用格式:
find
-pathname:所要查找的目錄及其所有子目錄(默認遞歸查找)。默認為當前目錄。
-option:指定參數。
-filetype:想要查找的文件類型。
-action:對查找結果進行的處理。
在linux的日常管理中,使用find命令全局搜索文件的使用頻率很高,熟練掌握以及靈活運用對提高工作效率很有幫助。
find的語法比較簡單,常用參數的就那么幾個,比如-name、-type、-ctime等。本文只是介紹其中一些常用的使用案例,如果需要更多的幫助,請參考find的使用手冊。
2.1 Linux使用`find`命令根據文件名全局搜索文件
搜索當前目錄下名字為mypic.png的文件
[root@zcwyou ~]# find . -name "mypic.png"
搜索當前目錄下所有的jpg文件
[root@zcwyou ~]# find . -name "*.jpg"
搜索當前目錄下的jpg文件和png文件
[root@zcwyou ~]# find . -name "*.jpg" -o -name "*.png"
搜索當前目錄下不是以png結尾的文件
[root@zcwyou ~]# find . ! -name "*.png"
2.2 使用`find`命令根據正則表達式全局查找文件
搜索當前目錄下,文件名以數字+png后綴結尾的文件。
[root@zcwyou ~]# find . -regex "./*[0-9]+.png"
2.3 使用`find`命令和指定的目錄路徑查找文件
搜索當前目錄下,路徑中包含folder的文件/路徑。
[root@zcwyou ~]# find . -path "*folder*"
2.4 使用`find`命令根據文件類型查找
通過-type進行文件類型的過濾。
比如,搜索當前目錄下,路徑中包含zcwyou的文件
[root@zcwyou ~]# find . -type f -path "*zcwyou*"
2.5 Linux根據搜索深度查找文件
搜索當前目錄下所有以txt后綴結尾的文件,不包括子目錄。
[root@zcwyou ~]# find . -maxdepth 1 -name "*.txt"
相對應的,也是mindepth選項。
[root@zcwyou ~]# find . -mindepth 2 -maxdepth 2 -name "*.png"
2.6 Linux使用`find`命令根據文件大小搜索文件
通過-size來過濾文件尺寸。支持的文件大小單元如下
- b 表示塊(512字節)
- c 表示字節
- w 表示字(2字節)
- k 表示千字節
- M 表示兆字節
- G 表示吉字節
比如,使用find命令搜索當前目錄下文件大小超過100M的文件
[root@zcwyou ~]# find . -type f -size +100M
2.7 根據文件的訪問、修改、變化時間全局搜索文件
支持下面的時間類型。
全局查找的案例1:搜索1天內被修改過的文件
[root@zcwyou ~]# find . -type f -mtime -1
全局查找的案例2:搜索最近1周內被訪問過的文件
[root@zcwyou ~]# find . -type f -atime -7
將日志目錄里超過一周的日志文件,移動到/tmp/log里。
[root@zcwyou ~]# find . -type f -mtime +7 -name "*.log" -exec mv {} /tmp/log ;
注意:{} 用于與-exec選項結合使用來匹配所有文件,然后會被替換為相應的文件名。
另外,;用來表示命令結束,如果沒有加,則會有如下提示
find: -exec: no terminating ";" or "+"
關于find命令更多的使用方法請參考本站的另一帖
Linux find命令查找文件34個實用案例
3. Linux使用`locate`命令全局搜索文件
locate命令在系統的全局范圍內查找。
一般使用格式:
locate
-option:指定參數。
-filetype:想要查找的文件類型。
locate常用參數
-d:指定要查找的數據庫路徑
-h: 顯示輔助訊息
-i:忽略大小寫
-q:安靜模式,不會顯示任何錯誤訊息。
-n:至多顯示 n個輸出。
-r: 使用正規運算式 做尋找的條件。
-o: 指定資料庫存的名稱。
-V: 顯示程式的版本訊息
簡單的使用案例:
[root@zcwyou ~]# locate abc.txt
/usr/share/123/456/abc.txt
提示
locate是從數據庫中讀取數據,而不是從文件系統中讀取。從數據庫中讀取時是讀取updatedb命令返回的結果:
而updatedb命令默認是一天(24小時)才自動運行一次,這就意味著如果是最新創建的文件,使用locate命令可能查找不到。
所以在使用locate命令前,先手動運行updatedb命令(需要root權限),非root用戶可以借助sudo取得root權限:
[root@zcwyou ~]# updatedb
4. Linux使用`grep`命令對文本文件進行全局搜索關鍵字
和find及locate命令不同的是,grep命令是在指定文件中搜索特定的內容,然后將包含有這些匹配內容的行輸出到標準輸出。如果不指定文件名,則從標準輸入讀取內容。grep命令經常和find等命令結合使用,其中grep常充當“過濾器”的角色。
grep命令常用參數
-c: 只輸出匹配行的行數。
-h: 查詢多文件時不顯示文件名。
-I: 不區分大小寫(只適用于單字符)。
-n: 顯示匹配的行和行號。
-s: 不顯示 不存在或無匹配文本 的錯誤信息。
-v: 反向匹配,即顯示不包含匹配文本的所有行。
-R: 遞歸查詢,即連同子目錄中的文件一起查詢。
使用案例:
在當前目錄下遞歸查找包含字符串"hello"的所有文件,并顯示匹配行的行號
格式:grep -Rn "搜索的關鍵字" ~
例如:
[root@zcwyou ~]# grep -Rn "www.linurumen.com" ~
5. 使用`which`命令全局搜索linux程序文件
which命令將在PATH變量指定的路徑中 查找某個系統命令的位置,并且返回第一個搜索結果。也就是說,使用which命令,就可以看到某個系統命令是否存在,以及執行的到底是哪一個位置的命令。
例如,查看當前環境下使用的是哪個bash:
[root@zcwyou ~]# which passwd
6. 使用`whereis`命令全局搜索linux程序文件
whereis命令用來定位二進制文件(參數-b)、源代碼文件(參數-s)和幫助手冊文件(即man文件,參數-m)。如果省略參數,則返回所有信息。
whereis命令使用案例
[root@zcwyou ~]# whereis bash
7. 總結:
上面介紹的linux全局搜索命令有5個,每個都有特定的功能,每一個系統運維人員都要牢記和掌握它的使用方法,隨時能高效查找和搜索目標文件。
版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态