从路径中提取目录[重复]

问题描述 投票:0回答:5

在我的脚本中,我需要正在使用的文件的directory。例如,file=“stuff/backup/file.zip”。我需要一种方法从变量 $file 获取字符串“

stuff/backup/
”。

string bash path
5个回答
254
投票
dirname -- "$file";

就是您要找的东西


60
投票
dirname $file

将输出

stuff/backup

basename
相反:

basename $file

会输出

file.zip

8
投票

像 Urvin/LuFFy 建议的那样使用

${file%/*}
在技术上更好,因为你不会依赖外部命令。要以相同的方式获取基本名称,您可以执行
${file##*/}
。除非需要,否则没有必要使用外部命令。

file="/stuff/backup/file.zip"
filename=${1##*/}     # file.zip
directory=${1%/*}     # /stuff/backup

通过这种方式,它也完全符合 POSIX 标准。希望能帮助到你! :-)


2
投票

为了从

directorypath
获取
filepath

file="stuff/backup/file.zip"
dirPath=${file%/*}/
echo ${dirPath}

1
投票

只需使用

$ dirname /home/~username/stuff/backup/file.zip

会回来的

/home/~username/stuff/backup/

© www.soinside.com 2019 - 2024. All rights reserved.