给定一个文件的路径让我们说:/home/user1/archive.zip
有人能告诉我如何在不使用外部二进制文件的情况下删除字符串 archive.zip 吗?
我知道:
${Path2File##*/}
可以给我文件名,但我需要这个文件的文件夹路径。
也欢迎通配符理解指南或解释。
最佳答案
做
"${Path2File%\/*}"
或使用外部二进制文件
dirname "$Path2File" # Not desirable as you've mentioned already
注意事项:
- 在
${parameter%word}
类型的 shell 参数扩展中,单词被扩展以产生一个模式,就像在文件名扩展中一样。如果模式与参数扩展值的尾部匹配,则扩展的结果是删除了最短匹配模式的参数值。 - 由于
/
在 shell 参数扩展中有特殊含义,我们只是将其转义,即\/
。目的是匹配文件基本名称即/path/to/example.zip
中的/example.zip
并删除。
引用:
关于bash - 使用 bash 参数扩展获取文件路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38034634/