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
.
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
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
.
$ basename -s .tar.gz.md5sum 'abcd_ef_1.2.3.12+all.tar.gz.md5sum'
abcd_ef_1.2.3.12+all
$ s='abcd_ef_1.2.3.12+all.tar.gz.md5sum'
$ echo "${s%.tar*}"
abcd_ef_1.2.3.12+all
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)
Tags text-processing filenames