zoukankan      html  css  js  c++  java
  • 【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)##属于贪婪操作,它从左向右找出匹配通配符的最长结果。

  • 相关阅读:
    quickSort
    L1-3 宇宙无敌加法器
    deepin下用命令管理自己的Github仓库
    PAT 1008
    增量包算法,时间复杂度3n
    vue组件化-容器
    vue模块化设计
    语言语法糖Sugar
    虚拟dom节点,支持querySelector
    html语法树转html
  • 原文地址:https://www.cnblogs.com/OliverQin/p/10246038.html
Copyright © 2011-2022 走看看