我想删除字符串的第一部分,这里是代码,替换最后部分的作品,但不是第一部分,任何帮助?谢谢。如何删除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
我想删除字符串的第一部分,这里是代码,替换最后部分的作品,但不是第一部分,任何帮助?谢谢。如何删除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
同与%
(删除后缀),您可以使用#
从而消除前缀:
no_path="${file_name#${dir}}"
可以说,你可以在这里使用一个模式,因为在我看来,就像你剥离了一个文件名的路径:
no_path="${file_name##*/}"
双#
使得比赛贪婪,所以它消除一切到最后的斜线。这是我一直在我的bash脚本中使用的东西'Usage
函数:echo "${o##*/} [-h] does something
我想,你正试图得到文件名,文件名没有扩展名和扩展名。
更好的用户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
尝试'no_path = $ {no_ext#$ {dir}}' – ymonad