Imprime o prefixo de um nome de arquivo para uma palavra específica

0

Eu tenho um nome de arquivo como abaixo e quero imprimir o nome do arquivo antes de .tar . Como eu posso fazer isso?

Nota: a parte depois de .tar é fixa, mas a parte antes de .tar é variável.

Exemplo: abcd_ef_1.2.3.12+all.tar.gz.md5sum

    
por Shashi Redekar 15.09.2016 / 17:00

3 respostas

0

Usando o sed por exemplo:

sed -E 's/(.*)\.tar.*//' <<< "abcd_ef_1.2.3.12+all.tar.gz.md5sum"

imprime abcd_ef_1.2.3.12+all .

    
por 15.09.2016 / 17:10
0
$ basename -s .tar.gz.md5sum 'abcd_ef_1.2.3.12+all.tar.gz.md5sum'
abcd_ef_1.2.3.12+all

Com Expansão do parâmetro

$ s='abcd_ef_1.2.3.12+all.tar.gz.md5sum'
$ echo "${s%.tar*}"
abcd_ef_1.2.3.12+all
    
por 15.09.2016 / 17:11
0

combinar encontrar e sed talvez?

find . -maxdepth 1 -name "*.tar*" | sed 's/\(.*\)\(\.tar.*\)//g'

explicação: a primeira parte do sed

\(.*\)\(\.tar.*\)

encontre o tar, mas forneça 2 agrupamentos. 1 antes do .tar e 1 depois do tar

a segunda parte do sed


pegue apenas o primeiro agrupamento (antes do .tar)

    
por 15.09.2016 / 17:34