如何使用 find -iregex 或(|)运算符?

如何使用 find -iregex 或(|)运算符?

卸载了一个应用程序,但是每当我尝试与它曾经关联的文件类型交互时,它仍然弹出。

像往常一样,find在查找和消除剩余项方面非常有用。但我注意到我似乎无法让正则表达式 OR 运算符按我预期的方式工作。

我尝试过一些不起作用的方法:

find / -iregex '(.*crossover.*)|(.*codeweavers.*)'          2>/dev/null
find / -iregex '(^.*crossover.*$)|(^.*codeweavers.*$)'      2>/dev/null
find / -iregex '\(.*crossover.*\)\|\(.*codeweavers.*\)'     2>/dev/null
find / -iregex '\(^.*crossover.*$\)\|\(^.*codeweavers.*$\)' 2>/dev/null

我尝试过的一些方法确实有效:

find / -iregex '\(.*crossover.*\)' 2>/dev/null
find / -iregex '^.*crossover.*$'   2>/dev/null
find / -iregex '.*crossover.*'     2>/dev/null

我的印象是,如果'\(.*crossover.*\)',返回匹配..
那么'\(.*crossover.*\)\|whatever'也应该如此。

正确的语法是什么?

答案1

只要您退出管道(因为您的前两个示例做错了)其余部分就应该可以工作。

已测试:

我有文件 /home/gaston/.viminfo/主页/加斯顿/.vim

find ~ -iregex '.*/\.vim\|.*/\.viminfo'产量

/home/gaston/.viminfo
/home/gaston/.vim

find ~ -iregex '.*/\.vim\|s;dlfkgj;slfjgs'得出:

/home/gaston/.vim

相关内容