51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 642|回复: 0
打印 上一主题 下一主题

[原创] 如何获取文件的绝对路径---Linux

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2022-11-10 15:42:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我们都知道,在命令行可以使用 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 的最初用途是解析符号链接,不过我们可以用它来显示文件的完整路径,如下为其语法结构:

  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 这两种方法对许多新用户来说可能还清楚,不过任何事情总有第一次,能学习到新的



东西总是好的。

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





分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-11-16 16:33 , Processed in 0.065626 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表