当前位置: 技术问答>linux和unix
bash shell :如何将一个目录名(目录层数不固定)的字符串剪掉最后一层目录?
来源: 互联网 发布时间:2016-06-04
本文导语: bash shell :如何将一个目录名(目录层数不固定)的字符串剪掉最后一层目录? 即实现/root/a/b/c -> /root/a/b | #! /bin/bash str=/usr/lib/32 newstr=${str%/*} echo $str echo $newstr 这样可以的,从最右边截去第...
bash shell :如何将一个目录名(目录层数不固定)的字符串剪掉最后一层目录?
即实现/root/a/b/c -> /root/a/b
即实现/root/a/b/c -> /root/a/b
|
#! /bin/bash
str=/usr/lib/32
newstr=${str%/*}
echo $str
echo $newstr
这样可以的,从最右边截去第一个匹配/*的子串
str=/usr/lib/32
newstr=${str%/*}
echo $str
echo $newstr
这样可以的,从最右边截去第一个匹配/*的子串
|
如果想省心呢,用dirname,如果想玩呢,上面的可以,sed "s//[^/]*$//"也可以。
|
常用的都让大家说了。
如果是对find的结果进行处理,find本身也有格式化参数,加上-printf "%hn"返回的就是结果文件或目录所在的目录名。
如果是对find的结果进行处理,find本身也有格式化参数,加上-printf "%hn"返回的就是结果文件或目录所在的目录名。
|
up
|
dirname.........这个是最好的,以前也碰过这种问题,在shell编程的时候
|
[root@RHEL4_U5 network-scripts]# pwd
/etc/sysconfig/network-scripts
[root@RHEL4_U5 network-scripts]# dirname /etc/sysconfig/network-scripts
/etc/sysconfig
/etc/sysconfig/network-scripts
[root@RHEL4_U5 network-scripts]# dirname /etc/sysconfig/network-scripts
/etc/sysconfig