Linuxfind给定string的文件名
我在Ubuntu上,我想要find当前目录中的所有文件和其名称中包含string“John”的子目录。 我知道grep可以匹配文件中的内容,但是我不知道如何将它与文件名一起使用。 任何帮助,将不胜感激。 
使用find命令,
 find . -type f -name "*John*" 
已经提供了一个正确的答案,但是为了让你学习如何帮助自己,我想我会用一种不同的方式来提供帮助。 如果你能总结一下你想要达成的目标,那么Linux上就有很好的帮助function。
 man -k <your search term> 
所做的就是在简短描述中列出所有包含search词的命令。 通常有一个很好的机会,你会发现你在追求什么。 ;)
该输出有时可能会有些压倒性的,我build议缩小到可执行文件,而不是所有可用的手册页,如下所示:
 man -k find | egrep '\(1\)' 
或者,如果您还想查找需要更高特权级别的命令,如下所示:
 man -k find | egrep '\([18]\)' 
 用它简单。 只需inputack <string to be searched> 
  find命令将花费很长时间,因为它扫描文件系统中的真实文件。 
 最快的方法是使用locate命令,它会立即给出结果: 
 locate "John" 
 如果没有find该命令,则需要安装mlocate软件包并首先运行updatedb命令,以便首次准备search数据库。 
更多细节在这里: http : //itblog.study.land/the-fastest-way-to-find-files-by-filename-mlocate-locate-and-updatedb-commands-2/
 这是一个非常简单的解决scheme,使用您要search的目录中的tree命令。  -f显示完整的文件path和| 用于将树的输出传递给grep以find名称中包含stringfilename 。 
 tree -f | grep filename