2017-08-14 26 views
0

我想删除字符串的第一部分,这里是代码,替换最后部分的作品,但不是第一部分,任何帮助?谢谢。如何删除B中字符串的第一部分

dir="/info/" 
file_name="/info/test.db" 

no_ext=${file_name%.db} 
no_path=${no_ext%${dir}} 

echo $file_name 
echo $no_ext 
echo $no_path 
+1

尝试'no_path = $ {no_ext#$ {dir}}' – ymonad

回答

0

同与%(删除后缀),您可以使用#从而消除前缀:

no_path="${file_name#${dir}}" 

可以说,你可以在这里使用一个模式,因为在我看来,就像你剥离了一个文件名的路径:

no_path="${file_name##*/}" 

#使得比赛贪婪,所以它消除一切到最后的斜线。这是我一直在我的bash脚本中使用的东西'Usage函数:echo "${o##*/} [-h] does something

0

我想,你正试图得到文件名,文件名没有扩展名和扩展名。

更好的用户basename命令来做到这一点。

$ basename /Users/text/help1.txt 
help1.txt 

$ basename help1.txt| cut -d'.' -f2 
txt 

$ basename help1.txt | cut -d'.' -f1 
help1 

此外,如果你想获得目录名不带文件 使用目录名

$ dirname /Users/text/help1.txt 
/Users/text 
相关问题