#For Filename
echo "a.b.c.txt" | rev | cut -d"." -f2- | rev
#For extension
echo "a.b.c.txt" | rev | cut -d"." -f1 | rev
Eu tenho um nome de arquivo como a.b.c.txt , quero que essa string seja dividida como
string1=a.b.c
string2=txt
Basicamente eu quero dividir o nome do arquivo e sua extensão. Eu usei cut , mas divide como a,b,c e txt . Eu quero cortar a string no último delimitador.
Alguém pode ajudar?
Existem muitas ferramentas para fazer isso.
Como você estava usando cut :
$ string1="$(cut -d. -f1-3 <<<'a.b.c.txt')"
$ string2="$(cut -d. -f4 <<<'a.b.c.txt')"
$ echo "$string1"
a.b.c
$ echo "$string2"
txt
Eu teria usado a expansão de parâmetro (se o shell for compatível):
$ name='a.b.c.txt'
$ string1="${name%.*}"
$ string2="${name##*.}"
$ echo "$string1"
a.b.c
$ echo "$string2"
txt
echo "a.b.c.txt" | cut -d. -f1-3
O comando cut delimitará . e fornecerá 4 fatores ( a , b , c , txt ). O comando acima imprimirá o fator 1 a 3 (incluído).
Ou:
echo "a.b.c.txt" | cut -d -f-3
O comando acima imprimirá o fator 1 até 3 (incluído).