Acho que basename
é o comando que você está procurando.
[me@host ~]# basename /home/xyz/Desktop/tools
tools
Descrição do problema: Desejo extrair uma string desconhecida (última string) de um determinado nome de caminho em um único comando de linha.
Restrições:
Amostra:
Eg1:
/home/xyz/Desktop/tools
Neste caso, preciso apenas extrair a palavra tools
.
Eg2:
/tmp/my_directory/my_big_dir/my_small/dir/cross
Nessa vez, preciso extirpar a última string cross
Existe uma maneira de fazer isso?
Eu tentei usar o comando cut
, mas não funcionou porque o tamanho do caminho é dinâmico.
Você pode fazer isso em bash e outros shells sem chamar outro programa, o que é claro muito mais rápido:
$ x=/home/xyz/Desktop/tools
$ echo ${x##*/}
tools
$ y=/tmp/my_directory/my_big_dir/my_small/dir/cross
$ echo ${y##*/}
cross
O ##
remove o prefixo mais longo que pode encontrar correspondendo */
basename /your/full/path
Fornece a saída que você deseja: caminho
Tags shell-script