在使用通配运算符时,我无法将文件名列表传递给程序。
本质上,问题是我有带有多级后缀的文件,并且我只想匹配具有较短后缀的主文件。
例如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