为了账号安全,请及时绑定邮箱和手机立即绑定

如何从Bash中的路径字符串中删除文件后缀和路径部分?

/ 猿问

如何从Bash中的路径字符串中删除文件后缀和路径部分?

慕的地10843 2019-09-18 11:23:09

给定一个字符串文件路径/foo/fizzbuzz.bar,如何使用bash只提取fizzbuzz所述字符串的一部分?



查看完整描述

3 回答

?
慕的地2183247

以下是使用Bash中的#和%运算符的方法。


$ x="/foo/fizzbuzz.bar"

$ y=${x%.bar}

$ echo ${y##*/}

fizzbuzz

${x%.bar}也可能${x%.*}是删除点${x%%.*}后的所有内容或删除第一个点后的所有内容。


例:


$ x="/foo/fizzbuzz.bar.quux"

$ y=${x%.*}

$ echo $y

/foo/fizzbuzz.bar

$ y=${x%%.*}

$ echo $y

/foo/fizzbuzz

文档可以在Bash手册中找到。查找${parameter%word}和${parameter%%word}尾随部分匹配部分。


查看完整回答
反对 回复 2019-09-18
?
拉丁的传说

看一下basename命令:


NAME=$(basename /foo/fizzbuzz.bar .bar)


查看完整回答
反对 回复 2019-09-18
?
偶然的你

纯粹的bash,在两个单独的操作中完成:


从路径字符串中删除路径:


path=/foo/bar/bim/baz/file.gif


file=${path##*/}  

#$file is now 'file.gif'

从路径字符串中删除扩展名:


base=${file%.*}

#${base} is now 'file'.


查看完整回答
反对 回复 2019-09-18
  • 3 回答
  • 0 关注
  • 77 浏览
我要回答

相关问题推荐

慕课专栏
更多

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信