2012-04-08 2 views
8

Ho file a1 a2 a3 b1 b2 b3 e ho bisogno di escludere a2 e b2 dall'elenco utilizzando solo il comando ls.UNIX comando 'ls' esclude carattere jolly

+0

Quando digito ls --ignore = "* 2", ma funziona (supponendo che abbia altri file) quando digito ls -a * -b * --ignore = "* 2", nessun file è escluso – user1078719

risposta

5

Prova questo:

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

O

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

Basta elencare i file che si desidera:

ls a1 a3 b1 b3 
+1

+1 in quanto questo è l'unico modo per soddisfare il vincolo "utilizzando solo ls". Qualsiasi tentativo di manipolare la lista degli argomenti usando i globi di shell sta usando la shell. (Sebbene tu usi la shell per eseguire ls, quindi forse quel particolare vincolo è mal posto). –

+0

@WilliamPursell, i miei pensieri esattamente. –

2

Prova con ls e grep

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

Prestare attenzione dopo ls una put 1 (il numero uno) e non la lettera "l". A volte il carattere li rende confusi.

14

opzione uso --ignore

ls --ignore=[ab]2 
+2

Ma su quale versione di 'ls' funziona l'opzione' --ignore'? Sul mio MAC non esiste. – dash1e

+0

GNU Coreutils 8.5 – bouzuya

+0

Sto usando Fefora13 se aiuta. – user1078719