Extrai string de um caminho

3

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:

  1. O caminho é dinâmico e pode mudar com a entrada dos usuários.
  2. Apenas a última cadeia deve ser extraída usando apenas um comando da linha o.

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.

    
por Abhimanyu Saharan 04.06.2016 / 15:34

3 respostas

4

Acho que basename é o comando que você está procurando.

[me@host ~]# basename /home/xyz/Desktop/tools
tools
    
por 04.06.2016 / 16:17
4

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 */

    
por 04.06.2016 / 16:44
0
basename /your/full/path

Fornece a saída que você deseja: caminho

    
por 04.06.2016 / 16:34