如何在erlang中获取给定目录的父目录名称?

时间:2016-04-12 07:39:44

标签: erlang

在erlang中,我有一个目录/proj/htdocs/root/jpT/elqstux/16-04-12/ct_run.ct_sim@esekilvxen263.2016-04-12_09.27.06/auto.suite.sbg_ft_esrvcc_midcall_SUITE.groups.esrvcc_midcall_media_stop_002.logs/run.2016-04-12_09.27.12/log_private/

我想获得此目录的父目录名称。 在这种情况下,期望结果为/proj/htdocs/root/jpT/elqstux/16-04-12/ct_run.ct_sim@esekilvxen263.2016-04-12_09.27.06/auto.suite.sbg_ft_esrvcc_midcall_SUITE.groups.esrvcc_midcall_media_stop_002.logs/run.2016-04-12_09.27.12/

但我尝试dirname(Filename) -> file:filename_all(),但我没有成功。

所以,我想知道是否有这种方法用于此目的?

1 个答案:

答案 0 :(得分:1)

由于您的输入路径以/结尾,您需要拨打filename:dirname/1两次(或者您可以自行删除它并拨打filename:dirname/1一次):

1> Path = "/proj/htdocs/root/jpT/elqstux/16-04-12/ct_run.ct_sim@esekilvxen263.2016-04-12_09.27.06/auto.suite.sbg_ft_esrvcc_midcall_SUITE.groups.esrvcc_midcall_media_stop_002.logs/run.2016-04-12_09.27.12/log_private/".
"/proj/htdocs/root/jpT/elqstux/16-04-12/ct_run.ct_sim@esekilvxen263.2016-04-12_09.27.06/auto.suite.sbg_ft_esrvcc_midcall_SUITE.groups.esrvcc_midcall_media_stop_002.logs/run.2016-04-12_09.27.12/log_private/"
2> Expected = "/proj/htdocs/root/jpT/elqstux/16-04-12/ct_run.ct_sim@esekilvxen263.2016-04-12_09.27.06/auto.suite.sbg_ft_esrvcc_midcall_SUITE.groups.esrvcc_midcall_media_stop_002.logs/run.2016-04-12_09.27.12/".
"/proj/htdocs/root/jpT/elqstux/16-04-12/ct_run.ct_sim@esekilvxen263.2016-04-12_09.27.06/auto.suite.sbg_ft_esrvcc_midcall_SUITE.groups.esrvcc_midcall_media_stop_002.logs/run.2016-04-12_09.27.12/"
3> filename:dirname(filename:dirname(Path)).
"/proj/htdocs/root/jpT/elqstux/16-04-12/ct_run.ct_sim@esekilvxen263.2016-04-12_09.27.06/auto.suite.sbg_ft_esrvcc_midcall_SUITE.groups.esrvcc_midcall_media_stop_002.logs/run.2016-04-12_09.27.12"

您的预期路径还包含一个尾随/,因此您可以手动追加filename:dirname不包括它:

4> filename:dirname(filename:dirname(Path)) ++ "/" == Expected.
true