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

下面介绍两种常用的方法来进行相关的操作。

一、使用${}

1、${var##*/}

该命令的作用是去掉变量var从左边算起的最后一个'/'字符及其左边的内容,返回从左边算起的最后一个'/'(不含该字符)的右边的内容。使用例子及结果如下:

从运行结果可以看到,使用该命令,可以提取出我们需要的文件名file.txt。

若使用时在shell程序文件中,可以使用变量来保存这个结果,再加以利用,如file=${var##*/}

2、${var##*.}

该命令的作用是去掉变量var从左边算起的最后一个'.'字符及其左边的内容,返回从左边算起的最后一个'.'(不含该字符)的右边的内容。使用例子及结果如下:

从运行结果可以看到,使用该命令,可以提取出我们需要的文件后缀。

如果文件的后缀不仅有一个,例如,file.tar.gz,命令${var##*.}仅能提取最后一个后缀,而我想提取tar.gz时该怎么办?那么就要用下面所说的${var#*.}命令了。

3、${var#*.}

该命令的作用是去掉变量var从左边算起的第一个'.'字符及其左边的内容,返回从左边算起第一个'.'(不含该字符)的右边部分的内容。使用例子及结果如下:

从运行结果可以看到,使用该命令,可以提取出文件的多个后缀。

4、${var%/*}

该命令的使用是去掉变量var从右边算起的第一个'/'字符及其右边的内容,返回从右边算起的第一个'/'(不含该字符)的左边的内容。使用例子及结果如下:

从运行的结果可以看到,使用该命令,可以提取出我们需要的文件所在的目录

5、${var%%.*}

该命令的使用是去掉变量var从右边算起的最后一个'.'字符及其右边的内容,返回从右边算起的最后一个'.'(不含该字符)的左边的内容。使用例子及结果如下:

当我们需要建立一个与文件名相同名字(没有后缀)的目录与对应的文件相对应时,就可以使用该命令来进行操作。例如,解压文件的情况就与此类似,我们压缩文件file.zip时,会在与file.zip同级目录下建立一个名为file的目录。

6、${}总结

其实${}并不是专门为提取文件名或目录名的,它的使用是变量的提取和替换等等操作,它可以提取非常多的内容,并不一定是上面五个例子中的'/'或'.'。也就是说,上面的使用方法只是它使用的一个特例。

看到上面的这些命令,可能会让人感到非常难以理解和记忆,其实不然,它们都是有规律的。

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

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

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

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

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

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

例如:${var%%x*}表示找出从右边算起最后一个字符x,并删除字符x及其右边的字符。

看到这里,就可以知道,其实该命令的用途非常广泛,上面只是指针文件名和目录名的命名特性来进行提取的一些特例而已。

二、basename和dirname

${}并不是专门为提取文件名和目录名设计的命令,那么basename和dirname命令就是专门为做这一件事而已准备的了。

1、basename

该命令的作用是从路径中提取出文件名,使用方法为basename NAME [SUFFIX]。

1)从路径中提出出文件名(带后缀),例子如下:

2)从上面命令的用法中可以看到,后缀(SUFFIX)是一个可选项。所以,若只想提取出文件名file,而不带有后缀,还可以在变量的后面加上后缀名,例子如下:

2、dirname

该命令的作用是从路径中提取出目录名,使用方法为 dirname NAME

使用例子如下:

这样就提取出了file.txt文件所在的目录。

注:该命令不仅能提取出普通文件所的目录,它能提取出任何文件所在的目录,例如目录所在的目录,如下:

它提取出了目录dir2所在的目录dir1.

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程小技巧。

总结

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。

linux如何提取文件名称,Linux shell 之 提取文件名和目录名的一些方法总结相关推荐

  1. 如何提取文件名称到excel

    如何提取文件名称到excel?在市场中很多小伙伴(例如公司行政和文员)就会碰到这个问题,将一些文件的名全部提取出来然后保存到excel表格中.当你在工作中如果遇到这个问题时,你却还在使用最传统的方法一 ...

  2. linux的八进制文件模式,linux od-输出文件的八进制、十六进制等格式编码的字节...

    博主推荐:获取更多 linux文件内容查看命令 收藏:linux命令大全 od命令用于输出文件的八进制.十六进制或其它格式编码的字节,通常用于显示或查看文件中不能直接显示在终端的字符. 常见的文件为文 ...

  3. 如何快速提取文件名称?

    怎么快速提取文件名称?有不少小伙伴在工作中都遇到过这样一件事情,就是一个文件夹中的所有文件的名称全部提取出来,很多人碰到这个问题的时候,想都不想就开始行动起来,他们挨个的复制文件的名称然后粘贴到wor ...

  4. Linux下常用文件解压(包括RMP、DEB的解压方法)

    Linux下常用文件解压(包括RMP.DEB的解压方法)   1.以.a为扩展名的文件: #tar xv file.a 2.以.z为扩展名的文件: #uncompress file.Z 3.以.gz为 ...

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

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

  6. linux截取文件名某一段,Linux shell 之 提取文件名和目录名的一些方法总结

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

  7. linux和windows文件名称长度限制

    Linux文件名称的长度限制是255个字符 windows下全然限定文件名称必须少于260个字符,文件夹名必须小于248个字符. linux下文件数.文件夹数.文件名称长度的各种限制 下面測试都是在没 ...

  8. linux静默删除文件夹,Linux常用命令10 - unzip

    zip 是最广泛使用的归档文件, 除了linux,windows也是非常的广泛.,支持无损数据压缩. zip 文件是包含一个或多个压缩文件或目录的数据容器. 接下来,我将解释如何使用 unzip 命令 ...

  9. linux字符驱动头文件路径,Linux 字符设备驱动例子

    编写好驱动,通过挂载的方法将驱动程序挂载到内核里面,大致步骤如下: 一:  1>建立以.c为后缀的c语言程序文件 (里面包含了设备名及设备号等) 2>建立Makefile文件(作用是通过m ...

最新文章

  1. Windows Defender还原误删文件
  2. 由电脑黑屏问题引发的探讨计算机底层原理
  3. 用户操作-用户添加操作代码实现
  4. 从零写一个编译器(九):语义分析之构造抽象语法树(AST)
  5. Highchart series一次只显示一条
  6. bat 取得服务列表_解读浩泽净水2018业绩:稳定增长背后的服务深化和科技跃进...
  7. C++:类访问修饰符
  8. db2离线备份_DB2高危操作LOAD命令风险详解
  9. silverlight 碰撞检测
  10. 干货分享|Research Essay写作的规范及步骤详解
  11. 背篼酥课堂-GPS定位(一) nodemcu 解析gps
  12. Codeforces Round #362 (Div. 2) D 树形dp
  13. 电脑系统重装篇1:Windows 10各版本介绍
  14. 淘宝总裁蒋凡:今年双11淘宝推荐流量超过了搜索流量
  15. 使用 @Resource或@Autowire时 Idea报错Could not autowire. No beans of 'xxxService' type found. more..出现红色波浪线
  16. 超声波传感器介绍及其使用(STM32)
  17. 智能家居解决方案-HouseKeeperV1.0 [管家V1]
  18. mongoDb中_id和ObjectId详细说明
  19. 安卓手机修改IMEI方法
  20. View系列 - MeasureSpec全面解析

热门文章

  1. 已解决: 什么是内部链接,什么是外部链接?
  2. flarum论坛如何html,Flarum从入门安装到基本设置
  3. FAILED: SemanticException [Error 10016]: Line 66:45 Argument type mismatch ‘ca_coupon_id‘: “map“ or
  4. ArcGIS中CGCS2000投影坐标数据转CGCS2000地理坐标数据
  5. Charle抓包测试-基础配置+实战
  6. 推荐几种加快火狐浏览器速度的办法
  7. 高清Apriltag图片生成和制作
  8. 凸优化笔记(2)-凸函数的四种定义
  9. ajax 随机,基于JQuery及AJAX实现名人名言随机生成器
  10. 自建API接口管理平台的产品脑图和解决方案