• 【shell】分别提取文件名中的基本名与扩展名


    文件名是有【基本名】与【扩展名】两部分构成

    image

     

    1.借助【%】操作符从文件名中提取基本名部分

    Linux:/qinys # file_name='get_name.tar.gz'
    Linux:/qinys # name=${file_name%.*}
    Linux:/qinys # echo "The File name is :"$name
    The File name is :get_name.tar

    从输出结果我们可以看出,已经成功从文件名get_name.tar.gz中提取基本名:get_name.tar

    原理说明:

    (1)从file_name中删除位于%右侧的通配符(上例中的是.*)所匹配到的字符串。通配符从右往左进行匹配

    (2)%属于非贪婪操作,它从右向左找出匹配通配符的最短结果。

    2.借助【%%】操作符从文件名中提取基本名部分

    Linux:/qinys # file_name='get_name.tar.gz'
    Linux:/qinys # name=${file_name%%.*}
    Linux:/qinys # echo "The File name is :"$name
    The File name is :get_name

    从输出结果我们可以看出,已经成功从文件名get_name.tar.gz中提取基本名:get_name

    原理说明:

    (1)从file_name中删除位于%%右侧的通配符(上例中的是.*)所匹配到的字符串。通配符从右往左进行匹配

    (2)%%属于贪婪操作,它从右向左找出匹配通配符的最长结果。

     

    3.借助【#】操作符从文件名中提取扩展名部分

    Linux:/qinys # file_name='get_name.tar.gz'
    Linux:/qinys # name=${file_name#*.}
    Linux:/qinys # echo "The Extension name is :"$name
    The Extension name is :tar.gz

    从输出结果我们可以看出,已经成功从文件名get_name.tar.gz中提取基本名:tar.gz

    原理说明:

    (1)从file_name中删除位于#右侧的通配符(上例中的是*.)所匹配到的字符串。通配符从左往右进行匹配

    (2)#属于非贪婪操作,它从左向右找出匹配通配符的最短结果。


    4.借助【##】操作符从文件名中提取扩展名部分

    Linux:/qinys # file_name='get_name.tar.gz'
    Linux:/qinys # name=${file_name##*.}
    Linux:/qinys # echo "The Extension name is :"$name
    The Extension name is :gz

    从输出结果我们可以看出,已经成功从文件名get_name.tar.gz中提取基本名:gz

    原理说明:

    (1)从file_name中删除位于##右侧的通配符(上例中的是*.)所匹配到的字符串。通配符从左往右进行匹配

    (2)##属于贪婪操作,它从左向右找出匹配通配符的最长结果。

  • 相关阅读:
    用动画切换按钮的状态
    用UICollectionView实现无限轮播图
    水平方向瀑布流
    UICollectionViewFlowLayout使用示例
    旋转木马效果
    Greenplum集群或者Postgresql出现死锁肿么办?
    Lucene的全文检索学习
    Jms规范学习
    Nginx的相关问题
    keepalived+Nginx实现主备保障Nginx的高可用。
  • 原文地址:https://www.cnblogs.com/OliverQin/p/10246038.html
Copyright © 2020-2023  润新知