考虑下面的命令行片段:

$ cd /tmp/
$ mkdir dirA
$ mkdir dirB
$ echo "the contents of the 'original' file" > orig.file
$ ls -la orig.file 
-rw-r--r-- 1 $USER $USER 36 2010-12-26 00:57 orig.file

# create symlinks in dirA and dirB that point to /tmp/orig.file:

$ ln -s $(pwd)/orig.file $(pwd)/dirA/
$ ln -s $(pwd)/orig.file $(pwd)/dirB/lorig.file
$ ls -la dirA/ dirB/
dirA/:
total 44
drwxr-xr-x  2 $USER $USER  4096 2010-12-26 00:57 .
drwxrwxrwt 20 root          root          36864 2010-12-26 00:57 ..
lrwxrwxrwx  1 $USER $USER    14 2010-12-26 00:57 orig.file -> /tmp/orig.file

dirB/:
total 44
drwxr-xr-x  2 $USER $USER  4096 2010-12-26 00:58 .
drwxrwxrwt 20 root          root          36864 2010-12-26 00:57 ..
lrwxrwxrwx  1 $USER $USER    14 2010-12-26 00:58 lorig.file -> /tmp/orig.file

在这一点上,我可以用readlink来看看什么是符号链接的"原始"文件(嗯,我猜这里通常的术语是"目标"或"源",但我脑海中的那些概念也可以是相反的,所以我将其称为"原始")文件,即.

$ readlink -f dirA/orig.file 
/tmp/orig.file
$ readlink -f dirB/lorig.file 
/tmp/orig.file

... 然而,我想知道的是——是否有一个命令可以在"原始"文件上运行,并找到指向它的所有符号链接?换句话说,类似于(伪):

$ getsymlinks /tmp/orig.file
/tmp/dirA/orig.file 
/tmp/dirB/lorig.file

提前感谢您的 comments ,

干杯

推荐答案

我还没有看到这方面的命令,而且这不是一项容易的任务,因为目标文件不包含源文件指向它的任何信息.

这类似于"硬"链接,但至少它们总是在同一个文件系统上,所以你可以用find -inode来列出它们.软链接问题更大,因为它们可以跨文件系统.

我认为你要做的基本上是对整个层次 struct 中的每个文件执行ls -al,然后使用grep搜索-> /path/to/target/file.

例如,我在我的系统上运行了一个(格式化为可读性——最后两行实际上在实际输出的one行上):

pax$ find / -exec ls -ald {} ';' 2>/dev/null | grep '\-> /usr/share/applications'
lrwxrwxrwx 1 pax pax 23 2010-06-12 14:56 /home/pax/applications_usr_share
                                         -> /usr/share/applications

Linux相关问答推荐

如何确定Linux上的最大静态TLS(线程本地存储)块大小?

Linux x86_64上PIE ELF可执行文件的.Text段的基本虚拟地址

为什么在已连接的设备上调用 btmgmt conn-info 返回:状态 0x02(未连接)

加载ELF64头文件为什么会导致分段错误?

如何使用 sed 和 date 命令替换和格式化字符串中的日期?

从 curl 命令输出中获取值

awk 不打印所需的 df 输出

在 Ansible 中使用 JSON 查询过滤数据以从 ansible_fact 中提取数据

使用 bash 在包含模式的 java 文件中查找行,然后替换该行的另一部分

我在哪里放置第三方库来设置 C++ Linux 开发环境?

如何在 linux 'screen' 中搜索任何单词

将以前忽略的目录添加到 Git 存储库

Linux批量转换:使用转换更改jpg的质量但保留其名称

与交换空间相关的链接器性能?

Linux内核列表中的WRITE_ONCE

将 jiffies 转换为毫秒

vscode 总是请求保存权限

仅使用 proc 获取本地网络接口地址?

在 Python 中删除 Root 权限

Anaconda 安装后,conda 命令失败并显示ImportError: no module named conda.cli