如何在 linux shell 脚本中使用正则表达式搜索文件 [关闭]

Posted

技术标签:

【中文标题】如何在 linux shell 脚本中使用正则表达式搜索文件 [关闭]【英文标题】:How search for files using regex in linux shell script [closed] 【发布时间】:2011-08-13 02:12:58 【问题描述】:

假设,我想在 linux 的所有子目录中,从 shell 脚本中搜索文件名中包含 python 的文件。如何使用正则表达式搜索所有位置?

【问题讨论】:

grep 是一个。你也可以使用find 【参考方案1】:

查找所有 .py 文件。

find / -name '*.py'

查找名称中包含“python”一词的文件。

find / -name '*python*'

同上,但不区分大小写。

find / -iname '*python*'

正则匹配,更灵活。查找 .py 文件和名称中包含“python”一词的文件。

find / -regex '.*python.*\|.*\.py'

【讨论】:

@Milimetric 如果没有引号,那么 shell 会尝试解释通配符。我们希望 find 处理通配符,而不是 shell,因此必须引用 * 我可以在这里使用所有 Perl 类型的正则表达式,例如向前看、向后看、命名组捕获等吗? 因为这里提到了-iname:还提到-iregex 可能会很有用,它与-regex 的作用相同,但不区分大小写(如-iname【参考方案2】:

如果简单的 shell 正则表达式就足够了,那么你可以使用 find

find /linux -name "*python*"

否则,我会说使用 ack (http://betterthangrep.com/)

【讨论】:

通配符不是正则表达式,也不是“简单的 shell 正则表达式”。在正则表达式中,没有* 通配符,但* 是一个量词。【参考方案3】:
find / -name "python"

[填充文本满足最小值]

【讨论】:

这不会对文件名进行正则表达式匹配

以上是关于如何在 linux shell 脚本中使用正则表达式搜索文件 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

如何在 shell 脚本中将此正则表达式与 grep 一起使用?

shell脚本之正则表达式

shell脚本之正则表达式

shell脚本之正则表达式

在linux的shell语言中,怎样用正则表达式来截取字符串?

如何在 linux shell 中使用正则表达式从文件中提取 IP 地址?