在 Linux 中获取绝对文件路径

您可以使用 pwd 命令获取目录的完整路径:

pwd

但是如何在 Linux 中获取文件的绝对路径呢?

有几种方法可以打印文件的完整路径:

  • 阅读链接
  • 真实路径
  • 寻找
  • 结合 ls 和 pwd
打印完整文件路径的不同方法

让我一一向您展示这些命令。 但在此之前,我建议先复习一下绝对路径和相对路径概念的基础知识。

的目的 readlink 命令是解析符号链接。 您可以使用它来显示文件的完整路径,如下所示:

readlink -f filename

这是一个 example:

[email protected]:~$ readlink -f sample.txt 
/home/abhishek/sample.txt
[email protected]:

使用 realpath 获取完整的文件路径

realpath 命令用于解析绝对文件名。 除其他用途外,它还可以显示文件的完整路径。

realpath filename

看看这个 example:

[email protected]:~$ realpath sample.txt 
/home/abhishek/sample.txt
[email protected]:~$

如果将其与符号链接一起使用,它将显示原始文件的真实路径。 你可以强制它 不遵循符号链接

realpath -s filename

这是一个 example 它默认显示源文件的完整路径,然后我强制它显示符号链接,而不是其原始文件。

[email protected]:~$ realpath linking-park 
/home/abhishek/Documents/ubuntu-commands.md
[email protected]:~$ realpath -s linking-park 

使用find命令获取文件绝对路径

这是 find 命令的内容。 一切都与您为搜索位置提供的目录相关。

如果你给它。 它将显示相对路径。 如果你给它目录的绝对路径,你会得到你正在搜索的文件的绝对路径。

将命令替换与 find 命令一起使用,如下所示:

find $(pwd) -name filename

您可以运行它来查找单个文件的完整路径:

[email protected]:~$ find $(pwd) -name sample.txt
/home/abhishek/sample.txt

或者,您可以将它与一堆匹配特定模式的文件一起使用:

[email protected]:~/Documents/eBooks$ find $(pwd) -name "*.pdf"
/home/abhishek/Documents/eBooks/think-like-a-programmer.pdf
/home/abhishek/Documents/eBooks/linux-guide.pdf
/home/abhishek/Documents/eBooks/absolute-open-bsd.pdf
/home/abhishek/Documents/eBooks/theory-of-fun-for-game-design.pdf
/home/abhishek/Documents/eBooks/Ubuntu 1804 english.pdf
/home/abhishek/Documents/eBooks/computer_science_distilled_v1.4.pdf
/home/abhishek/Documents/eBooks/the-art-of-debugging-with-gdb-and-eclipse.pdf

现在这个有点棘手和混乱。

您可以将环境变量 PWD 与 ls 命令一起使用,以显示文件和目录及其绝对路径:

ls -ld $PWD/*

你会得到这样的输出:

[email protected]:~/test$ ls -ld $PWD/*
-r--rw-r-- 1 abhishek abhishek    0 Jul 27 16:57 /home/abhishek/test/file2.txt
drwxrwxr-x 2 abhishek abhishek 4096 Aug 22 16:58 /home/abhishek/test/new

但是,要使用 ls 命令打印文件的完整路径,您必须像这样使用它:

ls -l $PWD/filename

不是最干净的解决方案,但它有效。

[email protected]:~$ ls -l $PWD/sample.txt 
-rw-r--r-- 1 abhishek abhishek 12813 Sep  7 11:50 /home/abhishek/sample.txt
[email protected]:~$ 

结论

我展示了在 Linux 中获取完整文件路径的四种不同方法。 find 和 ls 命令很常见,而许多 Linux 用户几乎不知道 realpath 和 readlink。 学习新事物总是好的,不是吗?