Linux使用给定的字符串查找文件名

Linux find file names with given string

我在Ubuntu上,我想查找当前目录和子目录中的所有文件,它们的名称包含字符串"john"。我知道grep可以匹配文件中的内容,但我不知道如何将其与文件名一起使用。任何帮助都将不胜感激。


使用find命令,

1
find . -type f -name"*John*"


已经提供了一个正确的答案,但是为了让你学会如何帮助自己,我想我会以不同的方式提供一些有用的东西;如果你能用一个词总结出你想要实现的目标,那么Linux上有一个强大的、很好的帮助功能。

1
man -k <your search term>

它的作用是在简短描述中列出所有包含搜索项的命令。通常你很有可能找到你想要的。;)

这种输出有时可能有些压倒性,我建议将其缩小到可执行文件,而不是所有可用的手册页,比如:

1
man -k find | egrep '\(1\)'

或者,如果您还希望查找需要更高权限级别的命令,例如:

1
man -k find | egrep '\([18]\)'


find命令需要很长时间,因为它扫描文件系统中的真实文件。

最快的方法是使用locate命令,这将立即产生结果:

1
locate"John"

如果找不到命令,需要先安装mlocate包,运行updatedb命令,第一次准备搜索数据库。

更多详情请访问:https://medium.com/@thucc/the-fastest-way-to-find-files-by-filename-mlocate-locate-commands-55bf40b297ab


这是一个非常简单的解决方案,使用您要搜索的目录中的tree命令。-f显示完整的文件路径,|用于将树的输出通过管道传输到grep以查找名称中包含字符串filename的文件。

1
tree -f | grep filename

使用简单的ack。只需键入ack