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