从路径中提取目录

Mat*_*att 107 string bash path

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

Mat*_*ieu 181

dirname $file
Run Code Online (Sandbox Code Playgroud)

是你在找什么

  • 而是 `dirname "$file"`。如果没有引号,如果文件或目录名包含空格,则会出现错误。 (4认同)

小智 8

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

file="/stuff/backup/file.zip"
filename=${1##*/}     # file.zip
directory=${1%/*}     # /stuff/backup
Run Code Online (Sandbox Code Playgroud)

这样它也完全符合 POSIX 标准。希望能帮助到你!:-)