如何使用单个ls命令(在zsh中)省略几个模式?

时间:2016-07-01 20:35:34

标签: zsh ls

我经常使用latex,并希望创建一个ls别名,排除pdflatex生成的所有额外文件,但.tex和.pdf除外。使用单个模式与" ^"选项有效,但是如果我输入了几个模式,它会将每个模式作为单独的命令运行,结果是多次列出了不匹配每个模式的文件。

有没有办法在zsh中使用单个命令一次省略几个模式?

3 个答案:

答案 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

但请记住,这个表达式匹配不是正则表达式。它是全球性的。