linux的find和grep區別?


為什么會把 grep和find 這兩個命令拿在一起來討論?

是因為他們之間有一個容易混淆的地方, [在我的記憶中]
: -name ? 它是find的選項! 不是grep的選項!

實際上, find基本上 就相當於 linux下的 "搜索" , 相當於windows下的搜索功能! 它是用來搜索文件的

而grep則是用來搜索文本的, 用來在standard input或文件內部的內容中, 來搜索 文字 內容 的!

或者說, 因為這兩個都是 "搜索" "查找"的相關命令, 所以還是容易混淆的, 但是記住:grep是用來查找文字內容的, 而find是用來查找文件的. 這樣就清晰了!

----------------------------------------==
transaction: 交易; 事務; 會報, 學會
You are cheated, the transaction is false.
你被騙了,會報是假的。
loan 英 [ləʊn] 美 [loʊn]
n. 貸款; 借款; 借貸
-------------------------------------------==
afford 指“提供,供給”,還可以特指經濟能力,負擔得起。例如:
The transaction afforded him a good profit.
這筆交易使他賺了一大筆。
I think I can afford this. 我認為我可以負擔得起。

offer 指“提出,提供,呈現”,表示向別人提供(一般是主動提供..)可接受也可拒絕的某物,如幫助、服務或物品,這可能是對方要求也可能是自己主動提出的。例如:He offered me a job, but I didn't accept.
he offered me a long loan so that I can go to Africa.
offer還有出價的意思。

provide 指“供給,提供,裝備,准備”,強調有預見,並通過儲存或准備的方式為某事做准備,以在需要時提供所需物品。例如:We provided them (with) board and lodging. 我們給他們提供食宿。
牽涉到金錢時,provide往往含有“免費供給”的意味,supply一般需付錢。

supply 指“供給,補充,彌補”,還可作名詞,意為“供給(量),物資,存貨”。例如:We are well supplied with foods. 我們的食品供給充足。
----------------------===

用grep搜索文本 文字內容的 ?

  • grep [options] 'patter' [file....]
  • grep 命令用來搜索文本(通常是standard input 管道),或從給定的文件中搜索行內包含了給定字符串或單詞的文件, 然后顯示匹配到的行!
    *grep: 最強大的地方就是可以在文件內部進行搜索匹配!
  • 其中'pattern'是必須的, 建議最好加上引號, 明確表示模式搜索
  • 最有用的幾個options:

(((

-r: recursive遞歸查找, 是指可以遞歸的查找目錄下的所有文件中的文本內容...!

也就是說, 默認的grep 后面是跟文件名, 如果要查找某個目錄下的所有文件, 則必須用-r選項,
否則,會提示說, " .... 是一個目錄" 
這里只是說, 是一個提示, "但並不表示是 一個錯誤!"

)))

-w: 完全匹配單詞
-i: --ignore-case
-n:  number the matched lines
-c:  count: 統計每個文件中匹配行的行數, 而且只顯示匹配的行數

-v:  表示反向匹配, 查找不包含/不匹配內容的文件

-h:  不顯示匹配內容所在的文件名
-H:    顯示........, 默認的是 要顯示文件名, [還要顯示其他的內容]

-l:  只顯示匹配內容所在的文件名
-L: 只顯示未匹配內容所在的文件名

--color: 高亮模式匹配到的strings

## 對目錄和子目錄的處理:
[[ 默認情況下,‘grep’只搜索當前目錄。如果此目錄下有許多子目錄,‘grep’會以如下形式列出:
grep: sound: Is a directory
這可能會使‘grep’的輸出難於閱讀。這里有兩種解決的辦法:
明確要求搜索子目錄:grep -r
或忽略子目錄:grep -d skip]]

## 默認的搜索, 是使用的basic regular expression, 要使用extended expression. 即: BRE和ERE
## 很重要的是, 有時可能需要按 "正則表達式"來搜索, 則要使用egrep命令 = grep -E




還可以多級過濾搜索:
grep pattern1 | pattern2 files :顯示匹配 pattern1 或 pattern2 的行,
grep pattern1 files | grep pattern2 :顯示既匹配 pattern1 又匹配 pattern2 的行。

[[[  搜索的特殊符號:
 還是在特殊字符前面加反斜杠: 
< 和 > 分別標注單詞的開始與結尾。
例如:
grep man * 會匹配 ‘Batman’、‘manic’、‘man’等,
grep \'<man\' * 匹配‘manic’和‘man’,但不是‘Batman’,      ??? 這個錯誤的
grep \'<man>\' 只匹配‘man’,而不是‘Batman’或‘manic’等其他的字符串。
\'^\':指匹配的字符串在行首,
\'$\':指匹配的字符串在行尾,
]]]


它們的區別是:

---------------------------------------==
而find的用法是:

  • 格式: find [path] [-options] [操作的expression]

  • path 默認的是當前目錄, 在當前目錄下查找文件

  • -options, 選項,是指 搜索條件

  • expression就是 具體的搜索表達式

  • 常用的-options:
    -atime +n
    -atime -n
    -ctime +n
    -ctime -n
    ------------ 其中, +n表示n天之前, -n表示n天之內.
    -type f/l/d/c/
    -name "pattern"...

表達式的邏輯組合:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM