5

Linux 中如何获取文件的绝对路径

 1 year ago
source link: https://www.51cto.com/article/722050.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

Linux 中如何获取文件的绝对路径

作者:刘光录 2022-11-04 10:49:56
我们介绍了在 Linux 中获取文件完整路径的4种方法,其中 find 和 ls 命令的方式最常见,而 realpath 和 readlink 这两种方法对许多新用户来说可能还清楚,不过任何事情总有第一次,能学习到新的东西总是好的。
06295a42738e8ceeabb721b736e43f22e52ae8.jpg

我们都知道,在命令行可以使用 pwd 命令来获取当前目录的完整路径(绝对路径):

那么,如何获取文件的绝对路径呢?有下列几种方法,可以打印文件的完整路径:

  • readlink
  • realpath
  • ls 和 pwd 组合使用
$ readlink -f sample.txt
/home/gliu/sample.txt
$ realpath -s sample.txt
/home/gliu/sample.txt
$ find $(pwd) -name sample.txt
/home/gliu/sample.txt

下面我们来详细介绍一下这些命令。不过在此之前,我建议先了解一下绝对路径和相对路径概念相关的基础知识。

使用 readlink 获取文件路径

readlink 的最初用途是解析符号链接,不过我们可以用它来显示文件的完整路径,如下为其语法结构:

readlink -f filename

如下为一个例子:

$ readlink -f sample.txt
/home/gliu/sample.txt

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

realpath 原用于解析绝对文件名,在这里我们也可以用它来显示文件的完整路径:

realpath filename

下面是一个例子:

$ realpath sample.txt
/home/gliu/sample.txt

如果使用符号链接,它将显示原始文件的实际路径。你可以强制它不跟随符号链接(即显示当前文件的路径):

realpath -s filename

下面是一个示例,默认情况下它显示了源文件的完整路径,然后我强制它显示符号链接,而不是原始文件:

$ realpath linking-park
/home/gliu/Documents/ubuntu-commands.md
$ realpath -s linking-park
/home/gliu/linking-park

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

下面是使用 find 命令获取文件路径的方法。

在 find 命令中,如果给定的路径是一个点 . ,那么它将显示相对路径;如果给定的是一个绝对路径,那么就可以获取搜索文件的绝对路径。 使用命令占位符与 find 命令一起使用,如下:

find $(pwd) -name filename

我们可以使用这种方式来获取单一文件的绝对路径:

$ find $(pwd) -name sample.txt
/home/gliu/sample.txt

或者,可以使用匹配模式(比如星号 *)来获取一组文件的路径:

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

使用 ls 命令打印完整路径

使用 ls 命令来获取文件的绝对路径,稍微优点复杂。 我们可以在 ls 命令中使用环境变量PWD来显示文件和目录的绝对路径,如下:

ls -ld $PWD/*

使用上述命令,会得到如下输出:

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

要使用上述命令打印某个文件的完整路径,可以如下使用:

ls -l $PWD/filename

这虽然不是最好的解决方案,但是很有效,看下面的例子:

$ ls -l $PWD/sample.txt
-rw-r--r-- 1 gliu gliu 12813 Sep  7 11:50 /home/gliu/sample.txt

以上我们介绍了在 Linux 中获取文件完整路径的4种方法,其中 find 和 ls 命令的方式最常见,而 realpath 和 readlink 这两种方法对许多新用户来说可能还清楚,不过任何事情总有第一次,能学习到新的东西总是好的。

关于其他的任何想法,欢迎讨论。

责任编辑:庞桂玉 来源: TIAP

Recommend

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK