Regex Unix正则表达式

Regex Unix正则表达式,regex,unix,Regex,Unix,我需要在unix find命令中使用unix正则表达式: find/home/user/somePath/-maxdepth 1-正则表达式 /home/user/somePath/someUnwantedPath-正则表达式 /主页/用户/somePath/someMoreUnwantedPath 这是可行的,但我需要将正则表达式优化为一个正则表达式,因为不需要的路径不仅仅是几个。我想你可以交替使用 /home/user/somePath/(someUnwantedPath|someMoreU

我需要在unix find命令中使用unix正则表达式:

find/home/user/somePath/-maxdepth 1-正则表达式 /home/user/somePath/someUnwantedPath-正则表达式 /主页/用户/somePath/someMoreUnwantedPath


这是可行的,但我需要将正则表达式优化为一个正则表达式,因为不需要的路径不仅仅是几个。

我想你可以交替使用

/home/user/somePath/(someUnwantedPath|someMoreUnwantedPath)
find/home/user/somePath/-maxdepth 1-regex/home/user/somePath/someUnwantedPath | someMoreUnwantedPath

只需在带括号的组末尾添加更多路径,以新的|作为替换分隔符开始。即|另一条未经批准的道路

编辑

我是一个Windows迷,所以我对Unix不是很熟悉,但我想在BUW上尝试一下,看来你必须避开正则表达式元字符。所以我想正确的答案应该是

/home/user/somePath/\(someUnwantedPath\|someMoreUnwantedPath\)/.*
find/home/user/somePath/-maxdepth 1-regex/home/user/somePath/\someUnwantedPath\| someMoreUnwantedPath\/*

您可以使用grep-v-f而不是regex来使它干净。备用|运算符在许多unix系统中不起作用。排除文件应列出要排除的所有文件,包括子目录(如果有)

cat excl_files.txt
/home/user/somePath/someUnwantedPath1
/home/user/somePath/someUnwantedPath2
/home/user/somePath/someUnwantedPath3
..
/home/user/somePath/someUnwantedPathn

find "/home/user/somePath/" -maxdepth 1 |  grep -v -f excl_files.txt

如果我不希望任何SomeUntendePath子目录也不包括在内,那怎么办?我已经更新了答案,忽略了不需要的路径下的所有文件/目录-只需添加/*。