全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

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

很多时候在使用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.

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


# shell  # 提取文件名  # 获取目录文件名  # 目录下文件名  # shell script获取文件名或者目录名称的方法  # Linux shell 提取文件名和目录名的方法  # shell递归输出文件名和目录名的方法  # 使用Bash Shell获取文件名和目录名的简单方法  # shell 提取文件名和目录名的方法实现  # 算起  # 第一个  # 可以看到  # 不含  # 出了  # 是从  # 建立一个  # 仅能  # 就可以  # 是一个  # 我想  # 这一  # 让人  # 放在  # 还可以  # 是有  # 多个  # 是由  # 两种  # 是专门 


相关文章: ,石家庄四十八中学官网?  建站之星备案流程有哪些注意事项?  网站制作费用多少钱,一个网站的运营,需要哪些费用?  如何快速查询网址的建站时间与历史轨迹?  武汉网站制作费用多少,在武汉武昌,建面100平方左右的房子,想装暖气片,费用大概是多少啊?  英语简历制作免费网站推荐,如何将简历翻译成英文?  清单制作人网站有哪些,近日“兴风作浪的姑奶奶”引起很多人的关注这是什么事情?  佛山网站制作系统,佛山企业变更地址网上办理步骤?  湖南网站制作公司,湖南上善若水科技有限公司做什么的?  如何在景安服务器上快速搭建个人网站?  学校免费自助建站系统:智能生成+拖拽设计+多端适配  高防服务器如何保障网站安全无虞?  如何通过多用户协作模板快速搭建高效企业网站?  建站之星后台密码如何安全设置与找回?  网站建设制作、微信公众号,公明人民医院怎么在网上预约?  家族网站制作贴纸教程视频,用豆子做粘帖画怎么制作?  如何用VPS主机快速搭建个人网站?  高防服务器:AI智能防御DDoS攻击与数据安全保障  广州营销型建站服务商推荐:技术优势与SEO优化解析  如何通过智能用户系统一键生成高效建站方案?  如何彻底卸载建站之星软件?  攀枝花网站建设,攀枝花营业执照网上怎么年审?  武汉网站设计制作公司,武汉有哪些比较大的同城网站或论坛,就是里面都是武汉人的?  北京建设网站制作公司,北京古代建筑博物馆预约官网?  如何快速启动建站代理加盟业务?  建站之星如何开启自定义404页面避免用户流失?  购物网站制作公司有哪些,哪个购物网站比较好?  c++怎么使用类型萃取type_traits_c++ 模板元编程类型判断【方法】  在线教育网站制作平台,山西立德教育官网?  如何零成本快速生成个人自助网站?  企业微网站怎么做,公司网站和公众号有什么区别?  临沂网站制作企业,临沂第三中学官方网站?  太原网站制作公司有哪些,网约车营运证查询官网?  中山网站制作网页,中山新生登记系统登记流程?  建站主机解析:虚拟主机配置与服务器选择指南  建站之星后台密码遗忘如何找回?  ,怎么用自己头像做动态表情包?  php条件判断怎么写_ifelse和switchcase的使用区别【对比】  装修招标网站设计制作流程,装修招标流程?  广州建站公司哪家好?十大优质服务商推荐  如何通过云梦建站系统实现SEO快速优化?  阿里云高弹*务器配置方案|支持分布式架构与多节点部署  免费制作小说封面的网站有哪些,怎么接网站批量的封面单?  香港服务器建站指南:外贸独立站搭建与跨境电商配置流程  如何在腾讯云免费申请建站?  浅析上传头像示例及其注意事项  网站微信制作软件,如何制作微信链接?  GML (Geography Markup Language)是什么,它如何用XML来表示地理空间信息?  网站建设设计制作营销公司南阳,如何策划设计和建设网站?  如何快速使用云服务器搭建个人网站? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。