2016-03-02 66 views
0

我想列出除.mod.c文件之外的所有.c文件。我使用zsh 5.2(x86_64-debian-linux-gnu)和oh-my-zsh。我使用的模式如下:找不到正确匹配的匹配项

$ ls *.c  
ipmi_bt_sm.c ipmi_devintf.mod.c  ipmi_msghandler.c 
ipmi_powernv.c ipmi_poweroff.mod.c ipmi_si.mod.c 
ipmi_ssif.c  ipmi_watchdog.mod.c ipmi_devintf.c 
ipmi_kcs_sm.c ipmi_msghandler.mod.c ipmi_poweroff.c 
ipmi_si_intf.c ipmi_smic_sm.c   ipmi_watchdog.c 
$ ls *.c~mod.c 
zsh: no matches found: *.c~mod.c 
$ ls .*.c~aoesuthaoestuhsththsh 
zsh: no matches found: .*.c~aoesuthaoestuhsththsh 

我敢肯定,“的* .c〜mod.c”是正确的,因为这正是在下面的网站提出。

http://www.strcat.de/zsh/

LS的* .c〜lex.c匹配除lex.c

我必须启用特定延长通配所有的东西.c文件?或者禁用阻碍这个功能的东西?

回答

1

首先,你需要确保延长通配已开启: setopt extended_glob

(你可能会想,在.zshrc

至于你的方式,你想要的是*.c~*.mod.c

它的工作方式是pattern1~pattern2,它产生的所有匹配项pattern1减去pattern2的所有匹配项。你所拥有的是“以.c结尾的所有东西,减去mod.c”。你想要的真的是“以.c结尾的东西,减去以.mod.c结尾的所有东西”,这就是我上面给出的。