我在txt文件中有一个文件路径,该文件路径最后包含文件名。如何通过bash脚本区分路径和文件

时间:2018-11-04 19:36:55

标签: bash unix

假设我在一行txt文件中有一个路径和文件名。下面是示例

folder / folder1 / folder2 / folder3 / filename.txt

现在,我想获取整个路径,以便可以到达文件。我可以通过使用awk来获取文件名,该awk以相反的顺序(使用NF)由第一个“ /”读取分隔。但不确定如何获得完整路径。

我的输出应包含 文件夹/文件夹1 /文件夹2 /文件夹3

1 个答案:

答案 0 :(得分:0)

实际上,您可以通过多种方式来做到这一点...

假设您在名为line的var中添加了一行文本。

根据@Cyrus的建议,您可以使用:

dirname "${line}"

请注意,这将是一个相对路径,就像在txt文件中提供它一样。 (relative vs absolute path

如果需要完整路径,可以使用:

line="$(readlink -f "${line}")"
printf "%s" "${line##*/}"

请注意,dirnamereadlink都是二进制文件,不是bash内置的文件,因此它们无法在某些系统上运行(例如macOS)。 在这种情况下,您可以使用brew install coreutils安装coreutils。 (您可以冲泡here。)

但是,如果您希望便携性,可以认为它们是便携式的。

希望这会有所帮助。