Linux递归查找具有给定字符串的文件名[重复]

Posted

技术标签:

【中文标题】Linux递归查找具有给定字符串的文件名[重复]【英文标题】:Linux find file names with given string recursively [duplicate] 【发布时间】:2012-10-19 07:45:53 【问题描述】:

我在 Ubuntu 上,我想在当前目录和子目录中查找名称包含字符串“John”的所有文件。我知道grep 可以匹配文件的内容,但我不知道如何将它与文件名一起使用。

【问题讨论】:

【参考方案1】:

使用find 命令,

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

【讨论】:

使用 #!/bin/bash if [ -z $1 ]; then echo "Error: Specify pattern for search"; else /usr/bin/find . -type f -name "*$1*"; fi 创建自定义 bash 脚本可以让您以完美的快捷方式运行 F search-string @IliaRostovtsev - 不错,但[ -z "$1" ] 会好一点。 @Joe 啊,对。你的意思是如果路径有空格?但是在这里我们只检查是否存在 $1 空间会使 $2 出现,仅此而已。你的意思是理论上更好,对吧? @IliaRostovtsev - 实际上,我错了。如果 $1 为空,则测试变为 if [ -z ]。我认为这将是一个语法错误,但它有效。从现在开始,我可以简化一些代码。【参考方案2】:

使用 ack 很简单。 只需输入ack <string to be searched>

【讨论】:

这似乎还将包括所有包含搜索文本的路径,而不仅仅是文件:***.com/questions/7698867/…【参考方案3】:

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

最快的方法是使用locate 命令,它会立即给出结果:

locate "John"

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

更多细节在这里:https://medium.com/@thucnc/the-fastest-way-to-find-files-by-filename-mlocate-locate-commands-55bf40b297ab

【讨论】:

【参考方案4】:

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

tree -f | grep filename

【讨论】:

以上是关于Linux递归查找具有给定字符串的文件名[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何递归地查找具有文本模式的文件,不包括某些目录和文件[重复]

使用grep和sed递归查找和替换所有文件中的字符串[重复]

leetcode 609. 在系统中查找重复文件

查找集合中具有给定属性的所有对象[重复]

Linux查找含有特定字符串的文件

如何通过使用 grep 扫描整个目录来在文件内容中查找具有特定字符串的文件 [重复]