Bash Shell 解析路径获取文件名和目录名

前言

还是今天再写一个自动化打包脚本,用到了从路径名中获取最后的文件名。这里记录一下实现过程。当然,最后我也会给出官方的做法。(ps:很囧,实现完了才发现原来Bash Shell有现成的函数)

获取文件名

假设给定的路径名为:

/tmp/csdn/zhengyi/test/zhengyi.txt

awk解法

用“/”做分隔符,然后打印出最后的那一部分。实现代码如下:

resFile=`echo /tmp/csdn/zhengyi/test/adb.log | awk -F "/" '{print $NF}'`

官方解法(basename)

Bash Shell本身提供了basename命令,可以直接获取路径名最后的文件名,实现代码如下:

resFile=`basename /tmp/csdn/zhengyi/test/adb.log`

获取目录名

官方解法(dirname)

Bash Shell本身提供了dirname命令,特别方便,可以直接获取路径对应的目录名,实现代码如下:

dirPath=`dirname /tmp/csdn/zhengyi/test/adb.log`

awk解法

可以灵活的使用分隔符,混合正则表达式:

dirPath=`echo /tmp/csdn/zhengyi/test/adb.log | awk -F '/[^/]*$' '{print $1}'`

awk+for循环的方法:

echo /tmp/csdn/zhengyi/test/adb.log | awk 'BEGIN{res=""; FS="/";}{ for(i=2;i<=NF-1;i++) res=(res"/"$i);} END{print res}'

时间: 2024-12-21 02:02:25

Bash Shell 解析路径获取文件名和目录名的相关文章

Bash Shell 解析路径获取文件名称和文件夹名

前言 还是今天再写一个自己主动化打包脚本.用到了从路径名中获取最后的文件名称.这里记录一下实现过程. 当然,最后我也会给出官方的做法.(ps:非常囧,实现完了才发现原来Bash Shell有现成的函数) 获取文件名称 如果给定的路径名为: /tmp/csdn/zhengyi/test/zhengyi.txt awk解法 用"/"做分隔符,然后打印出最后的那一部分. 实现代码例如以下: resFile=`echo /tmp/csdn/zhengyi/test/adb.log | awk

C/C++ 解析文件路径 获取文件名和扩展名

1. _splitpath函数 在c或者c++编程中,常常会用到获取程序或文件的路径,比对路径做分解和合并处理,_splitpath和_makepath就可以完成这样的功能. 函数的声明 void _splitpath( const char *path, char *drive, char *dir, char *fname, char *ext ); 功能是分解路径,把你的完整路径给分割开来,就是一个对字符串进行分割的函数. 参数表 参数 描述 path Full path(完整路径) dr

C#通过文件路径获取文件名小技巧

string fullPath = @"\WebSite1\Default.aspx"; string filename = System.IO.Path.GetFileName(fullPath);//文件名 “Default.aspx” string extension = System.IO.Path.GetExtension(fullPath);//扩展名 “.aspx” string fileNameWithoutExtension = System.IO.Path.GetF

C#通过文件路径获取文件名

string fullPath = @"\WebSite1\Default.aspx"; string filename = System.IO.Path.GetFileName(fullPath);//文件名  "Default.aspx" string extension = System.IO.Path.GetExtension(fullPath);//扩展名 ".aspx" string fileNameWithoutExtension

php文件路径获取文件名

物理截取: $file = '/www/htdocs/inc/lib.inc.php'; $filename = basename($file); echo $filename, '<br/>';// lib.inc.php $filename = str_replace(strrchr($filename, '.'), '', $filename); echo $filename, '<br/>';// lib.inc 使用pathinfo($path, $options): $

在 SQL Server 中从完整路径提取文件名(sql 玩转文件路径)

四个函数: --1.根据路径获取文件名 -- ============================================= -- Author: Paul Griffin -- Create date: 18 January 2015 -- Description: Returns a filename with extension -- from a full path: -- D:\Temp\Resources\Images\My.Picture.jpg -- ==> My.P

Linux操作系统基础解析之(七)——Bash(Shell)基础知识(6)

SHELL BUILTIN COMMANDS  除非另外说明,内置命令如果接受由-引导的选项,那么它也接受--,来表示选项的结束.内置命令:,true,false和test不接受选项并且尤其不处理--引导的选项.内置命令exit,logout,break,continue,let和shift接受和处理以-开头的参数不需要以--开头的.其他接受参数但是不能接受特定选项的内置命令解释以-作为无效选项开头的参数并且需要--来阻止这样的解释.    : [arguments]      没有效果:这个命

Linux 常用命令解析及Bash Shell脚本用法示例

 摘要 Linux 命令是基于文本格式输入输出的一种程序,按照Unix哲学中强调的程序功能简单,输入宽松,输出严谨,各种程序组合可以具有更强大的功能,而具有这种灵活性的主要原因是Linux规定程序的输入输出必须坚持文件流格式,即文本格式,而这就是Linux系统的核心之一. 对于Bash,即Shell的一种,为现在主流Linux发行版本默认的命令行解释器,是一种功能强大的工具,可以实现对Linux支持的程序命令的组合,从而实现强大功能.类似于Window系统的bat文件,Bash具有更为强大的

写一个函数,尽可能高效的,从一个标准 url 里取出文件的扩展名?pathinfo文件路径&amp; parse_url解析url &amp; basename路径中文件名

例如: http://www.sina.com.cn/abc/de/fg.php?id=1 需要取出 php 或 .php 方案1 <?php function getExt($url){ $arr = parse_url($url); $file = basename($arr['path']); $ext = explode(".",$file); return $ext[1]; } echo getExt("http://www.sina.com.cn/abc/d