使用bash参数扩展获取文件路径

Dar*_*oid 2 bash path

给定文件的路径,请说:/home/user1/archive.zip

有人能告诉我如何在不使用外部二进制文件的情况下删除字符串archive.zip

我知道:

${Path2File##*/}
Run Code Online (Sandbox Code Playgroud)

可以给我文件名,但我需要这个文件夹的路径.

我们也欢迎使用通配符理解或解释指南.

sjs*_*sam 5

"${Path2File%\/*}"
Run Code Online (Sandbox Code Playgroud)

或使用外部二进制文件

dirname "$Path2File" # Not desirable as you've mentioned already
Run Code Online (Sandbox Code Playgroud)

笔记:

  1. 在类型的shell参数扩展中${parameter%word},单词被扩展为生成模式,就像在文件名扩展中一样.如果模式匹配参数的扩展值的尾部,则扩展的结果是删除了最短匹配模式的参数的值.
  2. 由于/shell参数扩展具有特殊意义,我们只是将其转义即\/.其目的是匹配即的文件名前缀 /example.zip/path/to/example.zip并将其删除.

参考:

Shell [参数扩展]