在shell脚本中获取子字符串

时间:2009-07-30 19:46:27

标签: string shell

如果我有一个像some/unknown/amount/of/sub/folder/file.txt这样的字符串,我怎么才能得到file.txt子字符串,删除前面部分,而长度未知

谢谢

编辑:文件名可以是任意长度,子文件夹可以是任何级别。

4 个答案:

答案 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