shell中提取文件名或目录名

Linux下实现获取某个目录下特定后缀文件的文件名 c和C++分别实现获取某个目录下特定后缀文件的文件名 阅读详情

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

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

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

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

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

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

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

如果文件的后缀不仅有一个,例如,file.tar.gz,命令KaTeX parse error: Expected '}', got '#' at position 5: {var#̲#*.}仅能提取最后一个后缀,…{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.
https://www.jb51.net/article/101569.htm

使用dirname命令在Linux提取路径的目录名 Linux操作系统中,dirname是一个非常有用的命令,它用于提取给定路径的目录名。本文将详细介绍如何使用dirname命令,并提供相应的源代码示例。命令可以方便地提取给定路径的目录名。你可以将其用于编写脚本命令行操作,以根据需要获取路径的目录部分。命令提取这两个路径的目录名,并将结果分别赋值给变量。其中,路径是要提取目录名的文件路径目录路径。命令提取该路径的目录名,并将结果赋值给变量。在上面的示例中,我们定义了两个路径。在上面的示例中,我们将路径。命令,我们成功提取了路径。dirname 路径。 阅读详情

相关推荐

教你几招在 Linux 中高效地查找目录

Linux 操作系统中,查找目录是一项常见的任务。无论是系统管理员还是普通用户,都可能需要查找特定的目录以执行各种操作,如导航文件系统、备份数据、删除文件等。Linux 提供了多种命令和工具来帮助我们在文件系统中快速找到目标目录。本文将介绍几种常用的方法和命令,帮助你在 Linux 中高效地查找目录。

网络技术联盟站 1万+

Linux命令之获取文件名basename

`basename` 命令用于打印目录者文件的基本名称。通常在 shell 脚本中用于获取文件名目录名

二木成林 5372

Linux提取文件夹下的所有文件名

Linux提取文件夹下的所有文件名

Eddy的博客 8293

jenkins中使用脚本来节省资源空间和使用shell提取文件名目录名的方法

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34024034的博客 391

Shell:常用命令之dirname与basename

Shell:常用命令之dirname与basename

hhd1988的专栏 1605

[Linux shell] basename详细说明

linux shell basename

hemaobin的博客 2589

linux的basename命令详解

用于截取路径中的文件名 / 目录名,去掉路径前缀,也可移除指定后缀,常搭配脚本使用。bash运行 二、常用参数 表格语法:bash运行 2. 截取并移除文件后缀 两种写法效果一致:直接加后缀 / -s 参数bash运行 写法 2:使用 参数 bash运行 多级后缀场景 bash运行 3. 多路径批量处理(-a) bash运行 4. 结合通配符批量去后缀 bash运行 四、典型实战场景(Shell 脚本高频用法) 场景 1:获取脚本自身文件名 bash运行

嵌入式之斋 308

Shell脚本——提取目录名文件名

${} basename dirname

一坨小橙子的博客 4155

Linux shell提取文件名目录名的一些方法

很多时候在使用Linuxshell时,我们都需要对文件名目录名进行处理,通常的操作是由路径中提取文件名,从路径中提取目录名提取文件后缀名等等。例如,从路径/dir1/dir2/file.txt中提取文件名file.txt,提取出目录/dir1/dir2,提取出文件后缀txt等。 下面介绍两种常用的方法来进行相关的操作。 一、使用${} 1、${var##*/} 该命令的作用是去掉变

ljianhui的专栏 21万+

shell 提取文件名目录名

在写shell脚本中,经常会有需要对路径和文件名做处理。有时候犯不着用sed命令来操作。bash提供的变量操作和一些外部命令都能很好的处理。 一、使用变量操作符 ${} 1、${var##*/} 该方式是从左开始最大化匹配到字符"/",然后截掉左边内容(包括字符"/"),返回余下右侧部分。 $ var=/dir1/dir2/file.txt $ echo ${var##

小耗子的博客 7万+

Linux shell提取文件名目录名

用于字符串的读取,提取和替换功能,可以使用用于字符串的读取,提取和替换功能,可以使用{} 提取字符串 1、提取文件名 [root@localhost log]# var=/dir1/dir2/file.txt [root@localhost log]# echo ${var##*/} file.txt 2、提取后缀 [root@localhost log]# echo ${var...

suojie的博客 2423

如何在linux提取文件名目录名

本文转载自:https://www.jb51.net/article/103875.htm 很多时候在使用Linuxshell时,我们都需要对文件名目录名进行处理,通常的操作是由路径中提取文件名,从路径中提取目录名提取文件后缀名等等。例如,从路径/dir1/dir2/file.txt中提取文件名file.txt,提取出目录/dir1/dir2,提...

pptde的博客 1599

linux shell文件名,Linux shell提取文件名目录名的一些方法

不少时候在使用Linuxshell时,咱们都须要对文件名目录名进行处理,一般的操做是由路径中提取文件名,从路径中提取目录名提取文件后缀名等等。例如,从路径/dir1/dir2/file.txt中提取文件名file.txt,提取出目录/dir1/dir2,提取出文件后缀txt等。shell下面介绍两种经常使用的方法来进行相关的操做。设计1、使用${}指针一、${var##*/}该命令的做...

weixin_35853083的博客 524
上一篇: mysql常用语句
下一篇: Linux下使用shell脚本自动执行脚本文件
S____M
博客等级 码龄8年 6粉丝 7原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值