如何使用shell从文件位置提取路径

如何使用shell从文件位置提取路径

如何从下面给定的字符串中提取路径位置。

/opt/oracle/app/oracle/product/12.1.0/bin/tnslsnr

预期产出。

/opt/oracle/app/oracle/product/12.1.0/bin

(或者)

/opt/oracle/app/oracle/product/12.1.0/bin/

答案1

使用shell的后缀去除功能

str=/opt/oracle/app/oracle/product/12.1.0/bin/tnslsnr
path=${str%/*}
echo "$path"

一般来说,从 的末尾${parameter%word}删除。在我们的例子中,我们要删除最后的斜杠以及后面的所有字符:。wordparameter/*

上面的结果是:

/opt/oracle/app/oracle/product/12.1.0/bin

使用目录名

目录名可用于从路径中剥离最后一个组件:

$ dirname -- "$str"
/opt/oracle/app/oracle/product/12.1.0/bin

答案2

start cmd:> dirname "/opt/oracle/app/oracle/product/12.1.0/bin/tnslsnr"
/opt/oracle/app/oracle/product/12.1.0/bin

file_path="/opt/oracle/app/oracle/product/12.1.0/bin/tnslsnr"
dir_path_woslash="${file_path%/*}"
echo "$dir_path_woslash"
/opt/oracle/app/oracle/product/12.1.0/bin

shopt -s extglob
dir_path_wslash="${file_path%%+([^/])}"
echo "$dir_path_wslash"
/opt/oracle/app/oracle/product/12.1.0/bin/

相关内容