如果我有一个像some/unknown/amount/of/sub/folder/file.txt
这样的字符串,我怎么才能得到file.txt
子字符串,删除前面部分,而长度未知。
谢谢
编辑:文件名可以是任意长度,子文件夹可以是任何级别。
答案 0 :(得分:13)
$ basename "some/unknown/amount/of/sub/folder/file.txt"
file.txt
要通常提取子字符串,可以使用此语法
$ hello="abcdef"
$ echo ${hello:1:3}
bcd
答案 1 :(得分:5)
虽然我同意正确的答案是调用basename,但在bash中你也可以使用##从变量的开头删除字符串中出现的最长字符串。
bash-3.2$ t=/this/is/a/path bash-3.2$ echo ${t##*/} path
答案 2 :(得分:4)
使用basename
命令:
orig_path="some/unknown/amount/of/sub/folder/file.txt"
last_comp=$(basename $orig_path)
echo $last_comp
答案 3 :(得分:4)
basename some / unknown / amount / of / sub / folder / file.txt