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 [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"...
表达式的逻辑组合: