从路径字符串中提取文件名

chh*_*rma 3 shell filenames

我需要从给定的路径中提取文件名,例如/dev/user/test.csv. 我需要/dev/user/在不同变量中的单独变量和文件名test.csv中的位置。
有人可以提出解决方案吗?

Cos*_*tas 6

一般

basename "/dev/user/test.csv" # produce «test.csv»
dirname "/dev/user/test.csv"  # produce «/dev/user»
Run Code Online (Sandbox Code Playgroud)

在某些 shell 中(例如basheg),您可以使用变量扩展

var="/dev/user/test.csv"
echo ${var##*/}               # produce «test.csv»
echo ${var%/*}                # produce «/dev/user»
Run Code Online (Sandbox Code Playgroud)

如果/dev/user/test.csv存在,您可以通过简单的技巧来划分您想要的内容:

find /dev/user/test.csv -printf '%h\t%f\n'
Run Code Online (Sandbox Code Playgroud)