从右边提取两个 / 之间的字符串

Extract string between two / from right

从右边提取两个/之间的字符串

命令准备:

输入:- [目录名称不固定]

例1:-

/dir1/dir2/

例二:-

/dir1/dir2/dir3/dir4/

我想要输出如下

示例 1 输出:-

nohup dsmc arch /dir1/dir2/ -subdir=yes > /tsm/backuplogs/dir2_`date +%d%m%y_%H_%M`.log &

示例 2 输出:-

nohup dsmc arch /dir1/dir2/dir3/dir4/ -subdir=yes > /tsm/backuplogs/dir4_`date +%d%m%y_%H_%M`.log &

使用 basename 程序从您的路径中提取最后一个目录,如下所示:

path=/dir1/dir2/dir3/dir4/
echo "nohup dsmc arch $path -subdir=yes > /tsm/backuplogs/$(basename $path)_\`date +%d%m%y_%H_%M\`.log &" 

上面一行会输出:

nohup dsmc arch /dir1/dir2/dir3/dir4/ -subdir=yes > /tsm/backuplogs/dir4_`date +%d%m%y_%H_%M`.log &

试试这个来提取子字符串:

basename /dir1/dir2/dir3/dir4/

输出:

dir4

使用 bash 内置命令:

string="/dir1/dir2/dir3/dir4/"
string="${string%/*}"           # remove trailing /
echo "${string##*/}"            # remove /dir1/dir2/dir3/

输出

dir4