从Unix中获取完整路径中的文件名

iwa*_*wan 44 unix bash shell ksh

我试图"abc.txt"摆脱/this/is/could/be/any/path/abc.txt使用Unix命令.请注意,这/this/is/could/be/any/path是动态的.

任何的想法?

提前致谢.

kev*_*kev 68

bash:

path=/this/is/could/be/any/path/abc.txt
Run Code Online (Sandbox Code Playgroud)

如果您的路径中包含空格,请将其包装 "

path="/this/is/could/be/any/path/a b c.txt"
Run Code Online (Sandbox Code Playgroud)

然后要提取路径,请使用basename函数

file=$(basename "$path")
Run Code Online (Sandbox Code Playgroud)

要么

file=${path##*/}
Run Code Online (Sandbox Code Playgroud)

  • 它应该用双引号括起来,以避免文件名中有趣字符出现问题:`file ="$(basename $ path)"`或`file ="$ {path ##*/}"` (2认同)

gbu*_*mer 6

basename path 在路径末尾给出文件名

编辑:

可能值得补充的是,常见的模式是在命令周围使用返回引号,例如`basename ...`,因此UNIX shell将执行命令并返回其文本值.

因此,要将basename的结果赋给变量,请使用

x=`basename ...path...`
Run Code Online (Sandbox Code Playgroud)

和$ x将是文件名.