按模式查找文件,但忽略具有相似模式的其他文件

按模式查找文件,但忽略具有相似模式的其他文件

我有一个目录,其中包含子目录,我需要获取其中一些子目录的名称,但有一个与它们具有相似模式的子目录我想忽略。

例如,如果子目录列表如下所示:

Name_One
Not_needed1
Name_Two
Name_Three
Not_needed2
Name_Zero

我想将子目录 Name_One、Name_Two 和 Name_Three 的名称存储在变量中,但我想忽略 Name_0。

此外,命名随每个项目而变化,但始终遵循 Name_Number 的模式,而 Name_Zero 始终是需要排除的名称。

我使用的是 Mac 操作系统。

答案1

尝试:

find . -type d -name 'Name_*' ! -name 'Name_Zero'

对于目录名称Name_[digit]并仅排除目录Name_0

find . -type d ! -name 'Name_0' -regex './Name_[0-9]*'

如果您也有子目录,请使用以下命令:

find . -type d ! -name 'Name_0' -regex '.*/Name_[0-9]*'

上面的正则表达式匹配与模式匹配的目录名称Name_[zero-or-more-digits],为了避免匹配 on Name_,请改用'.*/Name_[0-9][0-9]*'

相关内容