我有一个练习,我必须打印当前目录中以字母[a-z]
开头或以以下任意数字结尾的所有文件:[1/3/5/7/9]
我认为它必须是globstyle…代码是:
ls a[-z]* || *[13579]
但由于某些原因,这不起作用。也许我应该使用扩展正则表达式?
ls命令的参数根本不是正则表达式,而是shell globs。shell globs在命令执行之前由shell 解释。你可以这样做:
ls [a-z]* *[13579]
请注意,这可能包含重复的(文件a1
将列出两次),所以您可以这样做:
ls [a-z]* *[13579] | sort | uniq
试着这样做:
printf '%sn' [0-9]* *[a-z]
仅使用globs
见http://mywiki.wooledge.org/glob