Pasta de pesquisa exibindo apenas certas palavras

0

Eu tenho uma pasta com os seguintes arquivos:

ondemand_kvm131_img.2
vm114_img.2
vm114_img.3
ondemand_vm205_img.3
label_ondemand_kvm131_img.1
vm117_img.1

Gostaria que apenas exibisse os "nomes", portanto, neste caso, a saída deve ser

kvm131
vm114
vm114
vm205
kvm131
vm117

Como isso pode ser feito? Usando sed? Grep? Agradecemos antecipadamente.

    
por Devator 27.09.2012 / 02:27

2 respostas

1

Tente isto:

ls -1 | sed 's/_img.*//;s/.*_//'
    
por 27.09.2012 / 03:10
3

Existem várias maneiras de fazer isso, dependendo da formatação precisa dos nomes e do que você pretende fazer com ele. O mais simples provavelmente seria um ls | sed :

$ ls | sed 's/^\(.*_\)*\([^_]*\)_img\.[0-9]//'
kvm131
kvm131
vm205
vm114
vm114
vm117

Se os seus nomes de arquivo forem são e você só quiser uma aparência visual, isso funcionará bem, mas se você estiver fazendo mais com os nomes, existe a possibilidade de erros em nomes de arquivos ímpares. Você pode obtê-los individualmente assim:

$ for file in *; do left=${file%_img.?}; base=${left##*_}; echo $base; done 
kvm131
kvm131
vm205
vm114
vm114
vm117

Substitua o echo pelo seu comando de escolha. Ambos podem ser alterados para corresponder ao formato mais de perto, se você tiver um formato diferente no geral.

    
por 27.09.2012 / 02:51

Tags