前言

还是今天再写一个自己主动化打包脚本。用到了从路径名中获取最后的文件名称。这里记录一下实现过程。

当然,最后我也会给出官方的做法。(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}'

Bash Shell 解析路径获取文件名称和文件夹名的更多相关文章

  1. 一个获取指定目录下一定格式的文件名称和文件修改时间并保存为文件的python脚本

    摘自:http://blog.csdn.net/forandever/article/details/5711319 一个获取指定目录下一定格式的文件名称和文件修改时间并保存为文件的python脚本 ...

  2. 【.Net】C# 根据绝对路径获取 带后缀文件名、后缀名、文件名、不带文件名的文件路径

    1.c#根据绝对路径获取 带后缀文件名.后缀名.文件名.   1 string str =" F:\test\Default.aspx"; 2 string filename = ...

  3. c#根据绝对路径获取 带后缀文件名、后缀名、文件名

    zz   C#根据绝对路径获取 带后缀文件名.后缀名.文件名 1.c#根据绝对路径获取 带后缀文件名.后缀名.文件名. string str =" F:\test\Default.aspx& ...

  4. Unity3d外部加载音频,视频,图片等资源 及根据路径获取制定格式的文件

    1.根据路径获取制定文件类型的文件: 这里写一个类,调用了打开路径的方法:using UnityEngine;using System;using System.Collections.Generic ...

  5. 配置NGINX支持中文URL 中文文件名称或文件夹404无法訪问的解决方法

    NGINX不须要象apache那样要单独载入支持中文模块. # cat /etc/sysconfig/i18n  LANG="en_US.UTF-8" SYSFONT=" ...

  6. bash shell脚本之获取时间日期

    shell中的时间日期获取 cat test5: #!/bin/bash # using the backtick character testing=`date` echo "The da ...

  7. 【linux】shell代码,获取当前路径,创建文件夹

    #!/bin/bash CURRENT_PATH=`` cd $CURRENT_PATH MY_LOG=/var/log MY_DB=/var/lib/db [ ! -d $MY_LOG ] & ...

  8. springboot jar 部署到linux之后 获取类资源文件问题-- 仅限linux 下 情况比较特殊 需要获取打到jar内的 讲台资源 只能通过流获取,根据路径获取不到指定文件 nullpointExption

    https://blog.csdn.net/qq_27000425/article/details/72897282 ClassPathResource类,如果没有指定相对的类名,该类将从类的根路径开 ...

  9. shell 根据路径获取文件名和目录

    path=/dir1/dir2/dir3/test.txt echo ${path##*/} 获取文件名 test.txtecho ${path##*.} 获取后缀 txt #不带后缀的文件名temp ...

随机推荐

  1. Python机器学习2.2

    使用Python实现感知器学习算法 在<Python机器学习>中的2.2节中,创建了罗森布拉特感知器的类,通过fit方法初始化权重self.w_,再fit方法循环迭代样本,更新权重,使用p ...

  2. 根据不同的产品id获得不同的下拉选项 (option传多值)

    <td> 没有 value 所以要在<td>里面加上input  同时text 为hidden这样就不会显示value的值 <td><select id='g ...

  3. 【01】sass安装

    因为sass依赖于ruby环境,所以装sass之前先确认装了ruby.先导官网下载个ruby   下载地址:https://rubyinstaller.org/downloads/       ** ...

  4. cf842d Vitya and Strange Lesson

    #include <iostream> #include <cstdio> using namespace std; int s[2000005][2], cnt, n, m, ...

  5. URL 路由

    一般情况下,一个 URL 字符串和它对应的控制器中类和方法是一一对应的关系. URL 中的每一段通常遵循下面的规则: example.com/class/function/id/ 但是有时候,你可能想 ...

  6. 基于神经网络的embeddding来构建推荐系统

    在之前的博客中,我主要介绍了embedding用于处理类别特征的应用,其实,在学术界和工业界上,embedding的应用还有很多,比如在推荐系统中的应用.本篇博客就介绍了如何利用embedding来构 ...

  7. docker改变镜像源

    sudo echo “DOCKER_OPTS=\”\$DOCKER_OPTS –registry-mirror=http://your-id.m.daocloud.io -d\”” >> ...

  8. ORACLE金额转换成英文大写的函数

    用法如下:get_capital_money(Currency, Money) Currency: 货币或货币描述,将放在英文大写的前面: Money:金额.支持两位小数点.如果需要更多的小数点,请自 ...

  9. CodeForces - 750B New Year and North Pole

    http://codeforces.com/problemset/problem/750/B 模拟题 审题 在南极点 只能向北走(不能向 南 东 西) 所以也就不存在走过南极点的情况 北极点同样 然后 ...

  10. SQL SERVER 2012 第五章 创建和修改数据表 の CREATE语句

    CREATE <object type> <object name> CREATE DATABASE <database name> 比较完整的语法列表: 日志文件 ...