我们都知道,在命令行可以使用 pwd 命令来获取当前目录的完整路径(绝对路径):
pwd
那么,如何获取文件的绝对路径呢?有下列几种方法,可以打印文件的完整路径:
readlink
realpath
find
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 -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 $(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 -ld $PWD/*
使用上述命令,会得到如下输出:
$ ls -ld $PWD/*-r--rw-r-- 1 gliu gliu 0 Jul 27 16:57 home/gliu/test/file2.txtdrwxrwxr-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,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




