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



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

folder/folder1/folder2/folder3/filename.txt

现在我想得到整个路径,这样我就可以访问该文件。我可以通过使用awk获得文件名,该文件名由第一个"/"以相反的顺序读取(使用NF(分隔。但不确定如何获得完整的路径。

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

实际上,您可以通过多种方式来实现。。。

让我们假设您在一个名为line的var中有一行文本。

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

dirname "${line}"

请注意,这将是一个相对路径,就像您在txt文件中提供的那样。(相对路径与绝对路径)

如果你需要一个完整的路径,你可以使用:

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

请注意,dirnamereadlink都是二进制文件,并且不是bash中的内置文件,因此它们不能在某些系统(例如macOS(上工作。在这种情况下,可以使用brew install coreutils安装coreutils。(你可以在这里买到啤酒。(

然而,如果你的目标是便携性,它们可以被认为是便携的。

希望这能有所帮助。

最新更新