Menu Close

如何获取Linux中文件的完整路径 (绝对路径)

一)概述

文件和目录是操作系统的构建块。作为Linux用户,我们对文件和目录执行各种操作。其中一个操作是查找文件的完整路径。文件的完整路径也称为其绝对路径或规范路径。

在本教程中,我们将讨论多种查找文件完整路径的方法。

二)设置

让我们创建文件和目录结构作为示例:

cd /tmp
mkdir -p dir1/dir2/dir3/dir4/dir5
touch dir1/dir2/file2.txt
touch dir1/dir2/dir3/dir4/file4.txt
touch dir1/dir2/dir3/dir4/dir5/file5.txt

tree /tmp/dir1/
/tmp/dir1/
└── dir2
    ├── dir3
    │   └── dir4
    │       ├── dir5
    │       │   └── file5.txt
    │       └── file4.txt
    └── file2.txt

4 directories, 3 files

三)使用 readlink 命令

readlink 命令打印规范文件名。我们可以使用该命令的 -f 选项来查找文件的完整路径:

cd /tmp/dir1/dir2/dir3/dir4/dir5/
readlink -f file5.txt 
/tmp/dir1/dir2/dir3/dir4/dir5/file5.txt

 

四)使用 realpath 命令

另外,我们可以使用 realpath 命令来获取文件的绝对路径:

cd /tmp/dir1/dir2/dir3/dir4/
realpath file4.txt 
/tmp/dir1/dir2/dir3/dir4/file4.txt

五)使用 basenamedirname 命令的组合

basename 命令在我们想要从文件名中去除目录和后缀时非常有用。类似地,我们可以使用 dirname 命令从文件名中去除最后一个组件:

basename /tmp/dir1/dir2/dir3/dir4/file4.txt
file4.txt
dirname /tmp/dir1/dir2/dir3/dir4/file4.txt
/tmp/dir1/dir2/dir3/dir4

我们可以使用这两个命令的组合来查找文件的完整路径。让我们为此创建一个简单的 shell 脚本:

cat get_full_path.sh 
! /bin/bash
echo "$(cd "$(dirname "$1")" && pwd -P)/$(basename "$1")"

chmod +x get_full_path.sh
./get_full_path.sh file4.txt
/tmp/dir1/dir2/dir3/dir4/file4.txt

首先,我们使用 dirname 命令查找文件所在的目录。然后使用 cd 命令切换到该目录。

接下来,我们使用 pwd 命令打印当前工作目录。在这里,我们应用了 -P 选项以显示物理位置而不是符号链接。

最后,我们使用 basename 命令打印不带目录的文件名。

六)使用 find 命令

find 命令在目录层次结构中搜索文件。我们可以使用此命令打印文件的绝对路径:

cd /tmp/dir1/
find $PWD -type f -name file4.txt 
/tmp/dir1/dir2/dir3/dir4/file4.txt

 

七)结论

在本文中,我们讨论了多种查找文件绝对路径的实用示例。首先,我们讨论了 readlinkrealpath 命令的用法。然后,我们使用了 basenamedirname 命令的组合。最后,我们看到了 find 命令的示例。我们可以在日常生活中使用这些命令来提高我们的工作效率。

 

除教程外,本网站大部分文章来自互联网,如果有内容冒犯到你,请联系我们删除!

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

Leave the field below empty!

Posted in 文件

Related Posts