2012-04-08 416 views
8

我有文件a1 a2 a3 b1 b2 b3,我需要僅使用ls命令從列表中排除a2和b2。UNIX'ls'命令不包含通配符

+0

當我輸入ls --ignore = 「* 2」,它的工作原理,但(假設我有其他文件)當我鍵入ls -a * -b * --ignore =「* 2」時,不會排除文件 – user1078719 2012-04-08 08:51:21

回答

5

試試這個:

$ ls [a-b][13] 
a1 a3 b1 b3 

或者

$ shopt -s extglob 
$ ls !(*2) 
a1 a3 b1 b3 
2

只是列出你想要的文件:

ls a1 a3 b1 b3 
+1

+1,因爲這是滿足「僅使用ls」約束的唯一方法。任何使用shell globs操作參數列表的嘗試都是使用shell。 (雖然你使用shell來執行ls,所以也許這個特定的約束是不適合的。) – 2012-04-08 21:49:34

+0

@WilliamPursell,我的想法正是如此。 – 2012-04-09 05:22:19

2

嘗試用LS和LS認沽1(一把手),而不是字母 「L」 後,用grep

ls -1 | grep -viw "a2\|b2" 

留意。有時候字體讓他們感到困惑。

14

使用--ignore選項

ls --ignore=[ab]2 
+2

但是'ls'版本的選項'--ignore'的工作原理是什麼?在我的MAC上它不存在。 – dash1e 2012-04-08 08:48:38

+0

GNU Coreutils 8.5 – bouzuya 2012-04-08 08:56:18

+0

如果有幫助,我使用Fefora13。 – user1078719 2012-04-08 08:58:25