查找中的正则表达式不接受组中的或运算符

查找中的正则表达式不接受组中的或运算符

我正在尝试删除父目录中的所有文件和目录,但排除某些目录及其内容。为此,我使用寻找在 MacOS 上的 bash 脚本中。如果我仅排除一个目录,它就会起作用:

find ./public/wp-content -mindepth 1 ! -regex '^.\/public\/wp-content\/themes\(.*\)' -delete

但是当我尝试排除多个时却不行:

find ./public/wp-content -mindepth 1 ! -regex '^.\/public\/wp-content\/\(themes\|images\)\(.*\)' -delete

我尝试不逃避括号或管道等。但毫无作用...

答案1

尝试使用-E选项来接受扩展正则表达式:

find -E ./public/wp-content -mindepth 1 ! -regex '^\./public/wp-content/\(themes\|images\).*' -delete

或者:

find -E ./public/wp-content -mindepth 1 ! -regex '^\./public/wp-content/(themes|images).*' -delete

相关内容