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

Mah*_*aal 59 regex linux shell search

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

Joh*_*ica 94

找到所有的.py文件.

find / -name '*.py'
Run Code Online (Sandbox Code Playgroud)

在名称中查找带有"python"一词的文件.

find / -name '*python*'
Run Code Online (Sandbox Code Playgroud)

与上述相同但不区分大小写.

find / -iname '*python*'
Run Code Online (Sandbox Code Playgroud)

正则表达匹配,更灵活.在名称中找到.py文件和文件"python".

find / -regex '.*python.*\|.*\.py'
Run Code Online (Sandbox Code Playgroud)

  • @Milimetric如果你没有引号,那么shell会尝试解释通配符.我们希望find处理通配符,而不是shell,所以必须引用`*`. (3认同)
  • 因为这里提到了 `-iname`:还提到 `-iregex` 可能很有用,它与 `-regex` 的作用相同,但不区分大小写(如 `-iname`) (3认同)