从路径中提取字符串

从路径中提取字符串

问题陈述:我想在单行命令中从给定路径名中提取未知字符串(最后一个字符串)。

限制:

  1. 该路径是动态的,可以随着用户输入而改变。
  2. 仅使用一行命令即可提取最后一个字符串。

样本:

例如1:

/home/xyz/Desktop/tools

在这种情况下,我只需提取单词tools

例2:

/tmp/my_directory/my_big_dir/my_small/dir/cross

再次,我需要提取最后一个字符串cross

有没有办法做到这一点?

我尝试使用cut命令,但它不起作用,因为路径长度是动态的。

答案1

我认为basename这是您正在寻找的命令。

[me@host ~]# basename /home/xyz/Desktop/tools
tools

答案2

您可以在 bash 和其他 shell 中执行此操作,而无需调用另一个程序,这当然要快得多:

$ x=/home/xyz/Desktop/tools
$ echo ${x##*/}
tools
$ y=/tmp/my_directory/my_big_dir/my_small/dir/cross
$ echo ${y##*/}
cross

删除##它可以找到匹配的最长前缀*/

答案3

basename /your/full/path

为您提供所需的输出:路径

相关内容