使用 REGEX 在嵌套目录中查找文件

使用 REGEX 在嵌套目录中查找文件

所以我有一个具有这种结构的文件夹。

topperlayer
    ├── layerone
    │   └── testfile
    └── layertwo

layerone和一样layertwo,层下可以有很多目录,甚至是子目录。

图层之一或图层的子目录有一个文件testfile

是否可以testfile使用 REGEX 获取 所在位置?

就像是 -

#!/bin/bash
echo $(ls topperlayer/<REGEX>/testfile)

我可以os.walk对每个目录和子目录执行 an 操作以在 python 中查找该文件。但想在 shell 中执行此操作正则表达式

任何帮助或指示将不胜感激。

PS - 我对正则表达式一无所知。

答案1

testfile如果您需要在配置文件中指定文件的路径(正如您在注释中提到的),您必须首先知道它的位置。

有两种解决方案:

  1. find topperlayer -type f -name testfile
    

    topperlayer这将搜索名为 的常规文件之前的目录和所有子目录testfile。然后打印每个找到的文件的路径名。

  2. shopt -s globstar
    printf '%s\n' topperlayer/**/testfile
    

    这将首先启用globstar中的 shell 选项bash。这允许您使用**工作方式类似于*但“递归”匹配的通配模式。然后将printf打印与给定的通配模式匹配的每个名称。

上面的两种选择都会打印路径名每一个 testfile在下面topperlayer

找到文件的适当路径名后,将其添加到配置文件中。

答案2

find你是朋友吗?

find topperlayer -path 'glob/testfile'

用模式(不是正则表达式)替换 glob 例如start*middle*end

如果您需要正则表达式,请使用选项-regex

find topperlayer -regex 'regex/testfile'

相关内容