Shell 需要从文件路径中删除根目录

Shell 需要从文件路径中删除根目录,shell,Shell,我需要从文件路径中删除根目录。下面是同样的例子 路径1=/tmp/errorlog\u invest\u 12345\u 88\u 1:05:45.txt 输出: 这里的根目录是/tmp/ 此外,我希望以一种动态的方式完成这项工作,即为给定的任何文件路径标识根目录 请在这方面帮助我。谢谢 从字符串判断,您可能正在使用bash 您可以使用dirname-命令从路径中拆分“根”。例如: dirname/tmp/errorlog\u invest\u 12345\u 88\u 1:05:45.txt

我需要从文件路径中删除根目录。下面是同样的例子

路径1=/tmp/errorlog\u invest\u 12345\u 88\u 1:05:45.txt

输出:

这里的根目录是/tmp/

此外,我希望以一种动态的方式完成这项工作,即为给定的任何文件路径标识根目录


请在这方面帮助我。谢谢

从字符串判断,您可能正在使用bash

您可以使用dirname-命令从路径中拆分“根”。例如:

dirname/tmp/errorlog\u invest\u 12345\u 88\u 1:05:45.txt

这应该打印:tmp ... 结果。

这就是你想要的吗

$ path1=/tmp/errorlog_invest_12345_88_1:05:45.txt
$ file=${path1##*/}
$ echo $file
errorlog_invest_12345_88_1:05:45.txt
$ dir=${path1%/$file}
$ echo $dir
/tmp

“根目录”是指路径中的第一个目录吗?例如,对于“/a/b/file.txt”的输入,您希望得到什么?“b/file.txt”或“file.txt”?要在Linux、Mac、Windows上执行此操作吗?谢谢给定输入的根目录是“/a/b/”,即“file.txt”可以是任何内容,它完全取决于提供输入的用户。我想在linux中这样做。请帮助我这是不是意味着你只想得到文件名?如果是这样,请使用
basename
name=$(basename/tmp/which/some_file.txt)
但是,此命令将打印目录的“整个路径”,而不仅仅是实际的根目录。即,如果路径为“/tmp/files/somefile.txt”,则结果为:/tmp/files