我有一个目录,其中包含子目录,我需要获取其中一些子目录的名称,但有一个与它们具有相似模式的子目录我想忽略。
例如,如果子目录列表如下所示:
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]*'
。