【无标题】linux 获取文件名的后缀,Linux shell 之 提取文件名和目录名的一些方法

使用${}

用 于 字 符 串 的 读 取 , 提 取 和 替 换 功 能 , 可 以 使 用 {}用于字符串的读取,提取和替换功能,可以使用 使{} 提取字符串

1、提取文件名

# var=/dir1/dir2/file.txt

# echo ${var##*/}

file.txt

2、提取后缀

# var=/dir1/dir2/file.txt

# echo ${var##*.}

txt

3、提取不带后缀的文件名,分两步

# var=/dir1/dir2/file.txt

# tmp=${var##*/}

# echo $tmp

file.txt

# echo ${tmp%.*}

file

5、提取目录

# var=/dir1/dir2/file.txt

# echo ${var%/*}

/dir1/dir2

6、

# var=/dir1/dir2/file.txt

# echo ${var%%.*}

/dir1/dir2/file

7、

# var=/dir1/dir2/file.tar.gz

# echo ${var#*.}

tar.gz

8、${}总结

${}的使用是变量的提取和替换等操作;

#:表示从左边算起第一个

%:表示从右边算起第一个

##:表示从左边算起最后一个

%%:表示从右边算起最后一个

换句话来说,#总是表示左边算起,%总是表示右边算起。

:表示要删除的内容,对于#和##的情况,它位于指定字符(例子中的’/‘和’.’)的左边,表于删除指定字符及其左边的内容;对于%和%%的情况,它位于指定字符(例子中的’/‘和’.’)的右边,表示删除指定字符及其右边的内容。这里的’'的位置不能互换,即不能把*号放在#或##的右边,反之亦然。

使用文件目录的专有命令basename和dirname

1、提取文件名,注意:basename是一个命令,使用 ( ) , 而 不 是 (), 而不是 (),{}

# var=/dir1/dir2/file.txt

# echo $(basename $var)

file.txt

2、提取不带后缀的文件名

# var=/dir1/dir2/file.txt

# echo $(basename $var .txt)

file

3、提取目录

# var=/dir1/dir2/file.txt

# dirname $var

/dir1/dir2

# echo $(dirname $var)

/dir1/dir2

# dir=/dir1/dir2/

# dirname $dir

/dir1

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值