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
我想从我的搜索中排除隐藏文件的结果。
这似乎可以完成工作。
locate -ir '^/home/jack/\([^.][^/]\+/\)\+My[^/]*$'
Run Code Online (Sandbox Code Playgroud)
手册引用:
-i, --ignore-case 匹配模式时忽略大小写区别。
-r, --regexp REGEXP 搜索基本的正则表达式 REGEXP。如果使用此选项,则不允许使用 PATTERN,但可以多次指定此选项。
这应该有效 - 仅匹配非隐藏文件和文件夹:
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)
归档时间: |
|
查看次数: |
12235 次 |
最近记录: |