linux 查找指定文件名_链接文件不可用 怎么更改数据

linux 查找指定文件名_链接文件不可用 怎么更改数据在本教程中,我们将学习如何在Linux上查找特定文件的所有链接

linux

概述

在本教程中,我们将学习如何在 Linux 上查找特定文件的所有链接。我们将使用命令 lsof 列出任何进程打开的所有文件,然后 grep 仅过滤掉那些链接到目标文件的文件。

什么是链接?

Unix/Linux 系统中的链接是两个不同文件或目录之间的关联。创建链接时,它会为原始文件或目录创建新名称。您可以通过链接文件的别名访问链接文件,而不是直接访问原始文件。例如,如果创建一个名为“test”的符号链接,指向 /home/user/Desktop/file1.txt,则可以使用 test 而不是 Desktop/file1.txt 访问该文件。

设置

我们有一个 dir1 文件夹和一个 file1.txt 文档。我们使用 ln 命令从不同的文件夹创建了几个符号链接,指向文本文档和文件夹。

[tpoint@server1:~/test]$ ls -lrth
total 12K
-rw-r--r-- 1 tpoint tpoint11 Jun 11 16:50 file1.txt
drwxr-xr-x 4 tpoint tpoint4.0K Jun 11 16:50 dir1
[tpoint@server1:/tmp]$ ln -s ~tpoint/test/file1.txt filelink
[tpoint@server1:/tmp]$ ln -s ~tpoint/test/dir1 dirlink
[tpoint@server1:/tmp]$ ls -lrth
total 49M
lrwxrwxrwx 1 tpoint tpoint28 Jun 11 16:52 filelink -> /home/tpoint/test/file1.txt
lrwxrwxrwx 1 tpoint tpoint28 Jun 11 16:52 dirlink -> /home/tpoint/test/dir1
...

我们希望标识映射到 file1.txt 或 dir1 的所有链接。

您可以使用几种不同的方法来实现这一目标。现在,我们将详细研究每一个。

使用 find 命令

查找选项允许您查找文档中的所有链接。现在让我们看看是否可以通过使用这两个过滤器找到任何有用的链接目标。

按确切文件名查找

要找到并跟踪所有名为 file1.txt 的超链接文件,我们将 −L 选项添加到 grep 命令 −

[tpoint@server1:~/test]$ find -L / -samefile file1.txt
/home/tpoint/test/file1.txt
/tmp/filelink
/opt/filelink2
/srv/filelink3
find: ‘/etc/polkit-1/localauthority’: Permission denied

使用 −samefile 开关,我们将文件名或文件夹路径添加到命令行。搜索在任何地方执行,使用根 (/) 作为工作目录。

伟大!成功了。现已找到所有 file1.txt 链接。

我们可以使用重定向将错误消息(例如权限被拒绝)发送到 /dev/null。

[tpoint@server1:~/test]$ find -L / -samefile file1.txt 2> /dev/null
/home/tpoint/test/file1.txt
/tmp/filelink
/opt/filelink2
/srv/filelink3

按索引节点编号查找

在 Linux 文件系统(如 ext4)上工作时,它使用 inode 存储有关文件的信息。我们通过列出文件在内存中的位置(in-odes)来列出目录中的文件。每个 in−ode 都有多个链接,可以是符号链接,也可以是硬链接。我们可以通过查看文件的 inode 来判断文件是否已被修改。

[tpoint@server1:~/test]$ stat file1.txt
File: file1.txt
Size: 11 Blocks: 8 IO Block: 4096 regular file
Device: 810h/2064d Inode: 94804 Links: 1

此文件1.txt存储在索引节点编号94804处。

让我们使用带有“−inum”选项的“find”命令,该选项指的是我们要删除的文件的索引节点。

[tpoint@server1:~/test]$ find -L / -inum 94804 2> /dev/null
/home/tpoint/test/file1.txt
/tmp/filelink
/opt/filelink2
/srv/filelink3

已找到 file1.text 的所有链接。

通过递归方法查找

−type 选项允许提供多个文件类型规范。如果我们将类型指定为“小L”,它将向我们显示给定目录中的所有软链接。

[tpoint@server1:~/test]$ find / -type l
/home/tpoint/test/dir1/certs/Buypass_Class_2_Root_CA.pem
/home/tpoint/test/dir1/certs/3fb36b73.0
/home/tpoint/test/dir1/certs/0f5dc4f3.0
...

然后我们可以附加 -ls 选项以显示每个链接的完整属性。

[tpoint@server1:~/test]$ find / -type l -ls 2> /dev/null | more
94809 0 lrwxrwxrwx 1 tpoint tpoint 23 Jun 11 17:11 /tmp/dirlink -> /home/tpoint/test/dir1
94805 0 lrwxrwxrwx 1 tpoint tpoint 28 Jun 11 16:52 /srv/filelink -> /home/tpoint/test/file1.txt
94808 0 lrwxrwxrwx 1 tpoint tpoint 28 Jun 11 17:00 /tmp/filelink2 -> /home/tpoint/test/file1.txt
94810 0 lrwxrwxrwx 1 tpoint tpoint 24 Jun 11 17:11 /srv/dirlink2 -> /home/tpoint/test/dir1/
...

最后,我们可以使用“grep”命令搜索与特定文件名模式(file1.txt或dir/dir1)匹配的文件。

[tpoint@server1:~/test]$ find / -type l -ls 2> /dev/null | grep dir1
94809 0 lrwxrwxrwx 1 tpoint tpoint 23 Jun 11 17:11 /tmp/dirlink -> /home/tpoint/test/dir1
94810 0 lrwxrwxrwx 1 tpoint tpoint 24 Jun 11 17:11 /srv/dirlink2 -> /home/tpoint/test/dir1/
...

结论

在这里,我们介绍了查找文件或目录的所有硬链接的不同方法,以及如何使用查找命令行参数来实现此目的。

今天的文章linux 查找指定文件名_链接文件不可用 怎么更改数据分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/83864.html

(0)
编程小号编程小号

相关推荐

发表回复

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