![从路径中提取字符串](https://linux22.com/image/8305/%E4%BB%8E%E8%B7%AF%E5%BE%84%E4%B8%AD%E6%8F%90%E5%8F%96%E5%AD%97%E7%AC%A6%E4%B8%B2.png)
问题陈述:我想在单行命令中从给定路径名中提取未知字符串(最后一个字符串)。
限制:
- 该路径是动态的,可以随着用户输入而改变。
- 仅使用一行命令即可提取最后一个字符串。
样本:
例如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
为您提供所需的输出:路径