我经常使用latex,并希望创建一个ls别名,排除pdflatex生成的所有额外文件,但.tex和.pdf除外。使用单个模式与" ^"选项有效,但是如果我输入了几个模式,它会将每个模式作为单独的命令运行,结果是多次列出了不匹配每个模式的文件。
有没有办法在zsh中使用单个命令一次省略几个模式?
答案 0 :(得分:1)
确保KSH_GLOB
已启用。
% setopt KSH_GLOB
% touch foo.{tex,aux,log,pdf}
% ls foo.!(aux|pdf)
foo.pdf foo.tex
答案 1 :(得分:1)
您可以使用(...|...)
对模式进行分组,并使用^
取消分组模式,最后一个模式需要设置EXTENDED_GLOB
。例如:
ls ^*.(aux|log)
这将匹配名称与*.aux
或*.log
匹配的文件。可以使用其他|
链接更多排除模式:
ls ^*.(aux|log|toc|dvi)
答案 2 :(得分:0)
你可以
ls --hide=*.aux --hide=*.log
但请记住,这个表达式匹配不是正则表达式。它是全球性的。