使⽤BashShell获取⽂件名和⽬录名的简单⽅法
前⾔
还是今天再写⼀个⾃动化打包脚本,⽤到了从路径名中获取最后的⽂件名。这⾥记录⼀下实现过程。当然,最后我也会给出官⽅的做法。(ps:很囧,实现完了才发现原来Bash Shell有现成的函数)
获取⽂件名
假设给定的路径名为:
/tmp/csdn/zhengyi/
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}'

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。