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

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. [Android Security] APK自我保护 - 字符串处理

    cp : https://segmentfault.com/a/1190000005128037 在开发过程中字符串不可避免,但是这些字符串也可能是破解的关键点,比如服务器的地址和错误提示这些敏感的字 ...

  2. C#零基础入门03:打老鼠初级

    一:在源码管理器中打开VS 注意,下文这样的打开方式是在 TFS 的源码服务器中打开解决方案.如果我们使用 SVN,则直接在硬盘上打开解决方案就可以了. 打开VS: 然后按上图中的步骤1和2(双击2处 ...

  3. 样条之埃尔米特(Hermite)插值函数

    核心代码: ////////////////////////////////////////////////////////////////////// // 埃尔米特等距插值 /////////// ...

  4. 第二十五章 springboot + hystrixdashboard

    注意: hystrix基本使用:第十九章 springboot + hystrix(1) hystrix计数原理:附6 hystrix metrics and monitor 一.hystrixdas ...

  5. go语言之进阶篇通过map生成json

    1.通过map生成json 示例1: package main import ( "encoding/json" "fmt" ) func main() { / ...

  6. go语言之进阶篇方法表达式

    1.方法表达式 示例: package main import "fmt" type Person struct { name string //名字 sex byte //性别, ...

  7. [leetcode]Spiral Matrix II @ Python

    原题地址:https://oj.leetcode.com/problems/spiral-matrix-ii/ 题意: Given an integer n, generate a square ma ...

  8. Win32进程创建、进程快照、进程终止用例

    进程创建: 1 #include <windows.h> #include <stdio.h> int main() { // 创建打开系统自带记事本进程 STARTUPINF ...

  9. Apache Mahout:适合所有人的可扩展机器学习框架

    http://www.ibm.com/developerworks/cn/java/j-mahout-scaling/ 在软件的世界中,两年就像是无比漫长的时光.在过去两年中,我们看到了社交媒体的风生 ...

  10. Building LinkedIn’s Real-time Activity Data Pipeline

    转自:http://blog.163.com/guaiguai_family/blog/static/20078414520138911393767/ http://sites.computer.or ...