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

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)##属于贪婪操作,它从左向右找出匹配通配符的最长结果。

【shell】分别提取文件名中的基本名与扩展名的更多相关文章

  1. Linux shell 之 提取文件名和目录名的一些方法

    很多时候在使用Linux的shell时,我们都需要对文件名或目录名进行处理,通常的操作是由路径中提取出文件名,从路径中提取出目录名,提取文件后缀名等等.例如,从路径/dir1/dir2/file.tx ...

  2. Linux中一些约定俗成的文件扩展名

    注:Linux中的所有内容均以文件的形式保存,但不依靠扩展名区分文件类型(根据权限区分),约定俗成的文件扩展名是为了方便管理员对文件进行区分 压缩包:“*.gz”.“*.bz2”.“*.tar.bz2 ...

  3. C# 获得指定路径扩展名 , 去除扩展名

    //指定扩展名的文件 private void button1_Click(object sender, EventArgs e) { textBox1.Text = ""; st ...

  4. Delphi获取文件名、文件名不带扩展名、文件名的方法;delphi 获取文件所在路径

    取文件名 ExtractFileName(FileName); 取文件扩展名: ExtractFileExt(filename); 取文件名,不带扩展名: 方法一:   Function Extrac ...

  5. Delphi获取文件名、不带扩展名文件名、文件所在路径、上级文件夹路径的方法

    1.获取不带扩展名的文件名方法,利用ChangeFileExt函数修改传入参数的扩展为空,并不会对文件本身产生变更. ChangeFileExt(ExtractFileName('D:\KK\Test ...

  6. Shell获取文件的文件名和扩展名的例子

    这篇文章主要介绍了Shell获取文件的文件名和扩展名的例子,简明版的代码实例,看了就懂,需要的朋友可以参考下 basename example.tar.gz .tar.gz # => examp ...

  7. python脚本工具-2 去除扩展名后提取目录下所有文件名并保存

    文件夹里有多个RM格式的视频文件,现需要把它们的文件名都提取出来,并去掉文件的扩展名,以便放到需要的网页里. 源代码: # --- picknames.py --- import os filenam ...

  8. Delphi中文件名函数-路径、名称、子目录、驱动器、扩展名

    文件名函数 文件名函数可以对文件的名称.所在子目录.驱动器和扩展名等进行操作.下表列出这些函数及其功能. 函数说明 ExpandFileName() //返回文件的全路径(含驱动器.路径) Extra ...

  9. 【前端】提取URL中的各个GET参数

    /**************************** * 有这样一个URL:http://item.taobao.com/item.htm?a=1&b=2&c=&d=xx ...

随机推荐

  1. Shape 属性解释

    本文来自:http://blog.csdn.net/brokge/article/details/9713041 简介: 作用:XML中定义的几何形状 位置:res/drawable/文件的名称.xm ...

  2. Django model 中设置联合约束和联合索引

    来自:https://blog.csdn.net/ding_312/article/details/81264910 class Cart(models.Model): user = models.F ...

  3. quantum theory

    the principles of quantum mechanics by p.a.m.dirac.

  4. 【BLE】CC2541之发现服务与特征值

    一.简介 本文以SimpleBLECentral工程为例,解析CC2541作为主机时是如何发现从机的服务和特征值的. 二.实验平台 协议栈版本:BLE-CC254x-1.4.0 编译软件:IAR 8. ...

  5. asp.net网站发布

    1.iis里面新建一个网站,目录可以新建(例如:F:\dotNetWeb),还可以创建子文件夹如:F:\dotNetWeb\my,网站路径是可以自己设置的,也可以使用IIS默认的网站. 2.vs201 ...

  6. Set Matrix Zeroes leetcode java

    题目: Given a m x n matrix, if an element is 0, set its entire row and column to 0. Do it in place. cl ...

  7. Eclipse添加tomcat服务器以及解决404的问题

    Eclipse JavaEE IDE添加tomcat服务器 1. 先做准备工作,首先下载工具 点击下方链接下载     1) Tomcat v7.0     2) Eclipse IDE for Ja ...

  8. Python 通过打码平台实现验证码

    在爬虫时,经常遇到登录需要验证码的情况,简单的验证码可以自己解决,复制的验证码需要借助机器学习,有一定的难度.还有一个简单的方案就是采用付费的打码平台. 比如R若快(http://www.ruokua ...

  9. 【GRPC】GRPC-负载均衡

    GRPC-负载均衡 grpc nginx_百度搜索 grpc(1):Centos 安装java的grpc服务,使用haproxy进行负载均衡,nginx不支持 - freewebsys的专栏 - CS ...

  10. c#:winform从一个toolstriptool上拖动一个图标到一个自定义usercontrol内。

    效果: 在一个winform工程中,添加一个ToolStrip然后给它添加一个ToolStripButton(tsbStart,它就是红色框圈选的图标) this.toolStripTools = n ...