分享

linux shell获取文件名和路径,basename/dirname/${}运用_shell获取路径中的文件名

 石头爱学习 2023-06-28 发布于贵州

1. 获取文件名:basename

shell本身提供了获取文件名的命令:basename,该命令可以从路径中提取出文件名(带后缀)。

举个栗子:

  1. #/bin/bash
  2. File=/dir1/dir2/dir3/a.b.c.txt
  3. basename $File

执行的结果为:

a.b.c.txt

上面的栗子输出结果是文件后缀的,若不想带后缀,则:

  1. #/bin/bash
  2. File=/dir1/dir2/dir3/a.b.c.txt
  3. echo $(basename $File .txt)

结果为: 

a.b.c

2. 获取路径:dirname

dirname:从路径中提取出目录名

  1. #/bin/bash
  2. File=/dir1/dir2/dir3/a.b.c.txt
  3. dirname $File

结果为:

/dir1/dir2/dir3

  

上面两个命令是shell提供的,难免有些限制,我们可以使用${}来灵活获取,而且${}可以用来做shell的字符子串提取。

3. ${var##*/}

直接看个栗子:

  1. #/bin/bash
  2. var='/dir1/dir2/dir3/a.b.c.d'
  3. echo  ${var##*/}

上面这个栗子是:左起,找到最后一个'/'字符,返回其后面的内容(不含'/')

上面栗子的结果为:

a.b.c.d

4. ${##*.}

跟上面栗子一样:左起,找到最后一个'.'字符,返回其后面的内容(不含'.')

  1. #/bin/bash
  2. var='/dir1/dir2/dir3/a.b.c.d'
  3. echo  ${var##*/}

结果为:

d

5. ${var#*.}

左起,找到第一个'.'字符,返回其后面的内容(不含'.')

  1. #/bin/bash
  2. var='/dir1/dir2/dir3/a.b.c.d'
  3. echo  ${var#*.}

结果为:

b.c.d

6. ${var%/*}

右起,找到第一个'/'字符,返回开始到该字符的内容(不含'/')

  1. #/bin/bash
  2. var='/dir1/dir2/dir3/a.b.c.d'
  3. echo ${var%/*}

结果为:

/dir1/dir2/dir3

7.${var%%.*}

右起,找到最后一个'.'字符,返回开始到该字符的内容(不含'.')

  1. #/bin/bash
  2. var='/dir1/dir2/dir3/a.b.c.d'
  3. echo ${var%%.*}

结果为:

/dir1/dir2/dir3/a

对${}的总结:

#代表左起,%代表右起

两个符号代表最后一个字符,一个符号代表第一个字符

  1. #:左起第一个
  2. ##: 左起最后一个
  3. %:右起第一个
  4. %%:右起最后一个

 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多