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