zsh - combinação complexa de nome de arquivo [closed]

1

Tenho dificuldade em transmitir uma lista de nomes de arquivos para um programa ao utilizar operadores globbing.

Essencialmente, o problema é que eu tenho arquivos com sufixos de vários estágios e quero corresponder apenas os arquivos principais com o sufixo menor.

Por exemplo, filename.suffix_somedata deve ser correspondido, mas filename.suffix_somedata_extrainfo não deve.

Eu tentei ls filename.suffix_[a-zA-Z0-9]* e ls filename.suffix_[:alnum:]* , mas eles não funcionam como seria de esperar.

    
por Let_Me_Be 03.08.2015 / 13:36

2 respostas

2

O equivalente do operador * regexp em zsh -o extendedglob é # ( ## para + ). E você também pode usar globbing no estilo ksh com a opção kshglob . Então, ou:

setopt extendedglob # best in ~/.zshrc
ls -d filename.mainsuff_[[:alnum:]]#

Ou:

setopt kshglob
ls -d filename.mainsuff_*([[:alnum:]])(-)

(A parte (-) é para impedir que ([[:alnum:]]) seja considerado como um qualificador glob (ou você pode fazer setopt nobareglobqual )).

    
por 03.08.2015 / 13:42
-2

Aqui está um:

ls | cut -d '_' -f1,2
    
por 03.08.2015 / 18:06

Tags