find 和 search 的区别?

2018-01-24 22:09:14 +08:00
 innoink
比如,想要表达如下的意思,应该用哪个单词:

想在目录中找一个文件,应该用 find 还是 search ?

想在文本中找一个单词,应该用 find 还是 search ?

想用搜索引擎找一个页面,应该用 find 还是 search ?

假如你要写一个用于从某些东西里面找出符合条件的一部分东西的函数,这个函数名在什么情况下应该用 find,什么情况下用 search ?

这些情况下分别应该翻译成查找还是搜索?有何区别?
7337 次点击
所在节点    问与答
26 条回复
h4lbhg1G
2018-01-24 22:12:17 +08:00
find 一般是索引查找返回 index,search(多半是正则等复杂的查找)返回结果?完全没道理地臆测下。
geelaw
2018-01-24 22:24:59 +08:00
从词典考虑,find 是找到,search 是去找。

从用法上考虑,一般 find text in a document,但是 search files in a folder, search "some keywords" with Google, search the Internet。

如果要写一个查找规律的东西,有以下几种选择:

- Collection.Where
- string.Find
- RegExp.Match
- ShellFolder.Search
mringg
2018-01-24 22:25:58 +08:00
我想起 look for 和 find 了
McTaylor
2018-01-24 22:27:37 +08:00
find 是要找到,
search 是搜索遍历一次数组
hsuan
2018-01-24 22:28:32 +08:00
没有区别
SuperMild
2018-01-24 22:34:15 +08:00
感觉 search 是带有更明确的目的,更有计划、规律。find 更盲目一点,凭感觉去发现。
innoink
2018-01-24 22:35:12 +08:00
@geelaw linux 命令行 find 是查找文件的,各种编辑器的查找功能都叫 find,grep 叫 Globally search a Regular Expression and Print,AG 叫 the silver searcher,emacs 的查找是 Incremental Search,C++STL 里面既有 search 又有 find,还有个 find_end 和 search 完全相同只不过是倒序,二分查找叫 bsearch ……
我感觉很混乱
SuperMild
2018-01-24 22:38:32 +08:00
比如想在文本中找一个单词,凭肉眼快速浏览一下,用 find 好点,但如果用 Ctrl+F 的功能去找则用 search 好点。还有“就是找出图中最先看到的一个单词,预测你今天的运气”,这种单词都不确定的情况,就只能用 find 不能用 search 了。
winterbells
2018-01-24 22:41:50 +08:00
I found you. 我找到你了
I searched you. 我查找你了
northisland
2018-01-24 23:07:10 +08:00
search 更庞大,find 比较简单。

find 是文件级别
search 就可以是个引擎了
有本名著叫<the Search for Modern China>(《追寻现代中国》),search 这个词往大了用,可以用来描述 500 年追求现代化的过程~~~~
zhangxiao
2018-01-24 23:10:45 +08:00
感觉 find 目的性更明确,能准确描述要找的目标。search 相对模糊一些。
geelaw
2018-01-24 23:46:45 +08:00
@innoink search a file 和 search files in a folder 不一样,前者更倾向于在文件里面搜索。grep 的解释很简单,因为 grep 找到的东西不是 regex 所以不可能是 find a regex,search X 可以表达 find a match of X 的意思。
lxy
2018-01-24 23:50:33 +08:00
这种 google 一下 what's different between find and search 就有的回答
innoink
2018-01-25 00:20:53 +08:00
@lxy 那你能不能给我找一下,为什么“在文件中搜索”这个行为,在一般的编辑器(比如 atom )叫 find,快捷键 ctrl-f,但相同的行为在 grep、ag、emacs 中却都叫 search,这两种到底有什么区别
innoink
2018-01-25 00:22:17 +08:00
@lxy 还有,为什么有的地方翻译成查找,有的地方翻译成搜索,查找 和 搜索之间有什么区别
hguandl
2018-01-25 00:46:11 +08:00
0. LZ 有点钻牛角尖,但是我也喜欢这样 /逃

查了下牛津高阶词典第七版:

find - > BY SEARCHING 2 to get back sth/sb that was lost after searching for it/them

search - 1 to look carefully for sth/sb; to examine a particular place when looking for sb/sth

在我理解就是 search 是 find 的过程,或许可以理解为 find = search & get。换句话说就是 search 单单指用一定算法进行匹配的过程,无所谓找没找到,跑完即可;而 find 隐含一层是否找到的意思,就是经过 search 后是否有能 get 到的内容。以上瞎编,这只是强行区别,在实际函数方法的使用上,除了名字不同真的没有任何区别,不过感觉上 find 有点倾向于自然语言的说法,而 search 比较学术。
innoink
2018-01-25 02:11:06 +08:00
@hguandl 我就是在写代码的时候,想写一个查找功能的函数,我以前都用 find,毕竟 ctrl-f 习惯了;然而最近在学 emacs,突然一想,查找也可能是 search 啊
我知道 find 侧重结果,search 侧重过程,但是这在英文语境中才能体现,在代码中体现不出来
然后又想到
在 excel 中,同时存在 search 和 find 两个函数,而区别是大小写敏感和通配符,和“侧重过程还是侧重结果”并没有关系
stl 中也同时存在 search、find、search_n、find_end、find_first_of 等函数,都是大同小异,不明白为什么不全用 find 或者全用 search 前缀
然后又想到
同样是 search,search engine 被翻译成搜索引擎,binary search 却是二分查找,depth first search 又是深度优先搜索……
yangqi
2018-01-25 02:28:36 +08:00
都是找,但是 find 强调的是结果,search 强调的是过程

如果函数里面的话,search 可以理解为搜索,目标不是很明确,或者有很多,一般会返回所有结果。find 可以理解为寻找,目标比较明确,一般找到第一个就返回结果
innoink
2018-01-25 02:38:32 +08:00
@yangqi 实际上,python 的正则就不是这样的行为
yangqi
2018-01-25 02:48:46 +08:00
@innoink #19 都说了是一般情况,并且也没有严格的对与错。这种较真毫无意义

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/425698

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX