2012-04-08 10 views
8

Tengo los archivos a1 a2 a3 b1 b2 b3 y necesito excluir a2 y b2 de la lista solo con el comando ls.El comando 'ls' de UNIX excluye el comodín

+0

Cuando escribo ls --ignore = "* 2", que funciona, pero (asumiendo que tengo otros archivos) cuando escribo ls -a * -b * --ignore = "* 2", no se excluyen los archivos – user1078719

Respuesta

5

Prueba esto:

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

O

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

Basta con enumerar los archivos que desea:

ls a1 a3 b1 b3 
+1

+1 ya que esta es la única manera de cumplir la restricción "usando ls solamente". Cualquier intento de manipular la lista de argumentos utilizando shell globs usa el shell. (Aunque, usted usa el intérprete de comandos para ejecutivos, entonces tal vez esa restricción particular está mal planteada.) –

+0

@WilliamPursell, mis pensamientos son exactos. –

2

intento con ls y GrEP

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

Prestar atención después de ls a Coloque 1 (el número uno) y no la letra "l". A veces, la fuente los hace confusos.

14

opción de uso --ignore

ls --ignore=[ab]2 
+2

Pero, ¿en qué versión de 'ls' funciona la opción' --ignore'? En mi MAC no existe. – dash1e

+0

GNU Coreutils 8.5 – bouzuya

+0

Estoy usando Fefora13 si me ayuda. – user1078719

Cuestiones relacionadas