在linux下,文件系統占據著非常重要的位置,而我們對于文件系統的操作也顯得尤為重要。
如果我們想熟悉的操作文件系統,其中,我們需要對文本的查找,截取等命令需要熟悉的掌握。
這里就不得不說幾個關于文本操作的幾個命令的作用詳細介紹和對比。比如: locate,find ,grep ,sed等。
這里,grep ,sed 都屬于文本的查找,過濾的文本搜索工具。locate,find屬于查找文件的的工具,可以查找我們想找卻又
不知道具體路徑的文件;或者只知道文件的部分信息,這樣我們可以使用locate和find進行搜索文件。
1.locate
locate 屬于非實時查找(根據索引查找),其特點為,查找速度快,非精準查找,模糊查找。
首先,locate對于文件的搜索是根據數據庫來搜索文件的,在數據庫中搜索文件比使用find進行搜索的速度要快。
這個是比較簡單的搜索工具,僅需要 locate + keyword ,使用locate命命令后面跟上需要搜索的關鍵詞即可。
但是,有一點需要注意的就是因為locate是在數據庫中進行搜索的,而我們都知道數據庫更新需要一定條件,它
并不是隨時更新的。所以我們使用locate進行搜索是很多時候需要先手動更新一下數據庫。手動更新數據庫的方法就是使
updatedb命令更新數據庫,數據庫由于信息量比較大,所以更新時一般會比較慢 。所以為了不影響我們的工作,我們可以
在updatedb 后面跟上一個 &符號,這樣會在后臺自動的更新數據庫,我們也可以在終端上做別的工作。
)
例如,我們不知道 issue的位置,我們需要查一下:
2.find
find 屬于實時查找(遍歷所有的文件進行條件匹配),其特點為:精準查找,但速度比較慢
find的用法結構為:find [option]…[查找路徑][查找條件][處理動作]
[查找路徑]:默認為當前目錄
[查找條件]:默認為指定路徑下的所有文件
[處理動作]:默認為顯示在屏幕上
查找條件:
-name "文件名稱":支持使用glob通配符
* ? [] [^]
-iname "文件名稱":查找時忽略字符的大小寫
-user USERNAME :根據文件的屬主進行查找
-group GRPNAME :根據文件的屬組進行查找
-uid UID
-gid GID
-nouser:查找沒有屬主的文件
-nogroup:查找沒有屬組的文件
-inum n :按inode號進行查詢
組合條件查找:
與 : -a ,同時滿足
或 : -o ,滿足一個條件即可
非 : !,-not ,條件取反
德·摩根定律:
非(P 且 Q) = (非 P) 或 (非 Q)
非(P 或 Q) = (非 P) 且 (非 Q)
!A -a !B = !(A -o B)
!A -o !B = !(A -a B)
根據文件類型進行查找:
-type TYPE :根據文件類型查找
f :普通文件 d :目錄文件 l :符號鏈接 b :塊設備
c :字符設備 s :套接字文件 p :命令管道
根據文件大小查詢:
-size[+|-]#UNIT :常用單位 :k,M,G
#UNIT: (#-1, #],如:6k
-#UNIT:[0,#-1], 如:-6k
+#UNIT:(#,∞), 如:+6k
案例:1.找出/tmp目錄下,屬主不是root,且文件名不是fstab的文件 (為了顯示摩根定律的作用,我使用 head -4 只取了前4行)
2。排除目錄
3.sed流編譯器
說流編譯器可能有點過于概念化,通俗的講它的編譯功能主要體現在 sed -i 這個參數上,通過修改原文本,它的作用和grep都是進行文本內容的操作,不是查找文件。這里偶然間看到一個關于sed的功能圖,很詳細。供參考!
4.grep
grep 是一個文本過濾器,過濾文本內容。按照模式的內容進行逐行匹配并打印下來。grep和sed都支持正則表達式。在對文本的搜索,過濾中,這兩個文本處理工具是離不開正則表達式的。
grep [OPTIONS] PATTERN [FILE…]
[option] :
–color=auto: 對匹配到的文本著色顯示; ?
-v: 顯示不能夠被pattern匹配到的行; ?
-i: 忽略字符大小寫 ?
-n:顯示匹配的行號 ?
-c: 統計匹配的行數 ?
-o: 僅顯示匹配到的字符串; ?
-q: 靜默模式,不輸出任何信息 ?
-A #:after, 后#行 ?
-B #: before, 前#行 ?
-C #:context, 前后各#行 ?
-e:實現多個選項間的邏輯or關系
grep
–e ‘cat ’
-e ‘dog’ file
?
–
w:整行匹配整個單詞
?
–
E:使用ERE
這個還是對練習練習,我在上一篇博客中有關于sed和grep與正則表達式的使用,具體的案例。
原創文章,作者:zhong,如若轉載,請注明出處:http://www.www58058.com/34940
對文件查找部分文字太多,能簡練盡量簡練點,多些操作和聯系,find命令是比較常用的工具,需多加練習,熟練掌握。