Como pesquisar alternação vazia com tcsh

2

Eu quero procurar alguma alternação vazia com ls mas nada está funcionando. Eu tenho uma lista de arquivos: foo.txt foouubar.txt fooubbar.txt fooubar_1.txt foounix.txt

Eu quero ter apenas foo.txt e foouubar.txt

Eu tentei:

ls foo\(*ubar\|\(\)\).txt 

mas o resultado está vazio. Há algum erro na minha linha de comando?

Estou no tcsh

    
por heyhey 28.11.2014 / 13:40

2 respostas

2

Aqui está uma solução que funciona com tcsh . Eu usaria um operador de expansão de chaves, {..} , assim:

$ echo foo{,uubar}.txt
foo.txt foouubar.txt

Isso funciona fazendo um conjunto de sub-strings às quais a string "foo" é adicionada alternativamente. Nesse caso, estamos usando {,...} , o que significa que a primeira subcadeia tentada não é nada. A segunda sub-string é "uubar".

Referências

por 28.11.2014 / 15:24
1

Observe que, quando você usa ls com um canal, os arquivos são enviados uma linha por vez, permitindo usar grep e outros filtros; portanto, o seguinte irá funcionar independentemente do shell usado (mas gerará arquivos em linhas separadas).

ls | egrep "foo(uubar|)\.txt"

Se você quiser as colunas de volta:

ls | egrep "foo(uubar|)\.txt" | column
    
por 28.11.2014 / 16:36

Tags