如何在 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 一起使用?