為什么會把 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 [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"...
表達式的邏輯組合: