0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

介绍在Linux中获取文件完整路径的4种方法

冬至子 来源:TIAP 作者:刘光录 2022-11-15 16:40 次阅读

我们都知道,在命令行可以使用 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 这两种方法对许多新用户来说可能还清楚,不过任何事情总有第一次,能学习到新的东西总是好的。

审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Linux系统
    +关注

    关注

    4

    文章

    588

    浏览量

    27220
收藏 人收藏

    评论

    相关推荐

    查看Linux系统内存使用情况的几种方法

    Linux系统,内存监控是优化系统性能的关键。本文为你介绍12种方法,帮助你全面掌握Linux
    的头像 发表于 11-13 09:30 1.1w次阅读
    查看<b class='flag-5'>Linux</b>系统内存使用情况的几<b class='flag-5'>种方法</b>

    linux查看目录的方法概述

    linux如何只列出目录?下面介绍种方法列出当前路径下的目录,大家参考使用吧
    发表于 07-17 07:24

    linux下查看网卡流量的六种方法

    本文介绍linux下查看网卡流量的六种方法linux系统中使用nload、iftop、iostat等工具查看网卡流量,需要的朋友参考下。
    发表于 07-25 06:29

    香橙派PC Plus电脑开发板获取CPU温度的三种方法

    下文将给大家介绍PC Plus获取CPU温度的三种方法:1、shell操作 先通过shell操作热身一下,登录系统之后使用指令查看CPU温度,依次输入以下指令: # 进入目录 cd
    发表于 07-31 17:48

    Android系统linux下控制GPIO的方法

    1、rk3128控制GPIO  linux控制GPIO基本上有两种方法,一是通过pinctrl体系,直接使用/sys下的文件进行控制,另一就是编写驱动,
    发表于 10-12 16:52

    如何获取LED.h的完整路径

    1.将keil mdk的工程导入到rt-thread studio2.main.c引入了LED.h查看LED.h 的内容如何获取LED.h的
    发表于 02-15 10:25

    获取关联程序启动路径方法与实现

             本文介绍了安装可执行程序修改注册表建立文件关联链表的过程,提出了一基于文件类型
    发表于 09-09 08:59 23次下载

    keil添加STC型号的3种方法

    keil添加STC型号的3种方法
    发表于 09-09 16:22 76次下载

    如何使用Linux视频驱动接口V4L2进行视频采集编程?

    Linux系统,视频设备被当作一个设备文件来看待,设备文件存放在 /dev目录下,完整路径的设备文件
    发表于 09-17 08:00 18次下载

    Java如何获取文件路径

    Java 开发我们经常要获取文件路径,比如读取配置文件等等。今天我们就关于文件
    的头像 发表于 02-22 15:03 5273次阅读

    Python、PyQt如何从获取文件路径中提取文件路径

    。 解决办法:    使用self.openfile= QFileDialog.getOpenFileNames(),获取文件后,再使用os.path.dirname()从文件路径
    的头像 发表于 06-20 21:05 3403次阅读

    Linux + C语言】C语言获取文件大小的方法都在这

    Linux + C语言】C语言获取文件大小的方法都在这
    的头像 发表于 08-31 12:49 3338次阅读
    【<b class='flag-5'>Linux</b> + C语言】C语言<b class='flag-5'>获取</b><b class='flag-5'>文件</b>大小的<b class='flag-5'>方法</b>都在这

    C语言获取文件长度的两种方法

    C语言中没有直接获取文件长度的接口,但是我们可以使用标准库提供的函数来间接的获取文件长度。这里提供两种方法
    的头像 发表于 10-10 16:15 1205次阅读
    C语言<b class='flag-5'>获取</b><b class='flag-5'>文件</b>长度的两<b class='flag-5'>种方法</b>

    linux网络配置的3种方法

    Linux是一流行的操作系统,广泛应用于服务器和网络设备Linux系统提供了多种方法来配置网络连接,使得网络设置更加灵活和可定制。本文
    的头像 发表于 11-27 14:33 3923次阅读

    Linux系统文件比较工具集合

    Linux系统文件比较是一常见的任务,用于比较两个文件之间的差异。
    的头像 发表于 01-02 13:53 599次阅读