2016-03-02 104 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結尾的所有東西」,這就是我上面給出的。