与“定位”匹配的正则表达式

Jac*_*nes 10 bash regular-expression locate

我正在尝试使用 locate 命令在我的主文件夹中查找文件,但是每当我尝试运行它时,我都没有得到任何结果:

locate -i -l 4 --regexp '^\/home\/jack\/[A-Za-z0-9\/\ ]*(My.)*$'
Run Code Online (Sandbox Code Playgroud)

我也试过 ^\/home\/jack\/^(?!\.)[A-Za-z0-9\/\ ]*(My.)*$但也没有返回任何结果。

我正在寻找的文件只是为了测试它 /home/jack/Music/Foals/My Number.flac

我想从我的搜索中排除隐藏文件的结果。

Gra*_*eme 7

这似乎可以完成工作。

locate -ir '^/home/jack/\([^.][^/]\+/\)\+My[^/]*$'
Run Code Online (Sandbox Code Playgroud)

手册引用:

-i, --ignore-case 匹配模式时忽略大小写区别。

-r, --regexp REGEXP 搜索基本的正则表达式 REGEXP。如果使用此选项,则不允许使用 PATTERN,但可以多次指定此选项。


jay*_*ren 0

这应该有效 - 仅匹配非隐藏文件和文件夹:

find /home/jack -name "[^.]*My.*"
Run Code Online (Sandbox Code Playgroud)

甚至更简单 - 这匹配目录树中任何地方都没有隐藏目录的文件。也许这就是您想要的:

for f in /home/jack/**/*My.*
    do echo "$f" # or do any other command
done
Run Code Online (Sandbox Code Playgroud)