Linux 获取不带basename的文件路径的Unix命令

Linux 获取不带basename的文件路径的Unix命令,linux,bash,shell,unix,Linux,Bash,Shell,Unix,我在unix目录中有以下文件 /home/files/myfiles/good.txt 我需要单独提取文件路径 预期输出:/home/files/myfiles 注意:我不能使用剪切操作,因为文件路径是动态的。我将文件名和文件路径作为单个用户输入到shell脚本中,脚本应执行以下操作: echo /home/files/myfiles/good.txt | sed s,/*[^/]*$,, 试一试 FWIW,cut可以在rev $ echo "/home/files/myfiles/good

我在unix目录中有以下文件

/home/files/myfiles/good.txt
我需要单独提取文件路径

预期输出
/home/files/myfiles

注意:我不能使用剪切操作,因为文件路径是动态的。我将文件名和文件路径作为单个用户输入到shell脚本中,脚本应执行以下操作:

echo /home/files/myfiles/good.txt | sed s,/*[^/]*$,,
试一试


FWIW,
cut
可以在
rev

$ echo "/home/files/myfiles/good.txt" | rev | cut -d/ -f2- | rev
/home/files/myfiles

$ echo "/home/files/myfiles/yourfiles/good.txt" | rev | cut -d/ -f2- | rev
/home/files/myfiles/yourfiles

在不生成其他进程的情况下,您可以使用:

$ echo "/home/files/myfiles/good.txt" | rev | cut -d/ -f2- | rev
/home/files/myfiles

$ echo "/home/files/myfiles/yourfiles/good.txt" | rev | cut -d/ -f2- | rev
/home/files/myfiles/yourfiles
file=/home/files/myfiles/good.txt
echo "${file%/*}"
/home/files/myfiles