zsh - 复杂的文件名匹配

zsh - 复杂的文件名匹配

在使用通配运算符时,我无法将文件名列表传递给程序。

本质上,问题是我有带有多级后缀的文件,并且我只想匹配具有较短后缀的主文件。

例如filename.suffix_somedata应该匹配但filename.suffix_somedata_extrainfo不应该匹配。

我尝试过ls filename.suffix_[a-zA-Z0-9]*ls filename.suffix_[:alnum:]*,但它们没有按我的预期工作。

答案1

*中的正则表达式运算符的等效项zsh -o extendedglob#( ##for +)。您还可以通过该kshglob选项使用 ksh 风格的通配符。所以要么:

setopt extendedglob # best in ~/.zshrc
ls -d filename.mainsuff_[[:alnum:]]#

或者:

setopt kshglob
ls -d filename.mainsuff_*([[:alnum:]])(-)

(这(-)部分是为了防止([[:alnum:]])被视为全局限定符(或者你可以这样做setopt nobareglobqual))。

答案2

这是一个:

ls | cut -d '_' -f1,2

相关内容