查找符号链接的原始文件


20

因此,假设我在主目录中有一个文件链接到另一个分区上的另一个文件的符号链接。我如何找到链接文件的目标位置?通过这种方式,我的意思是,让我们说我file2/home/user/; 但这是到另一个的符号链接file1。在file1无需手动浏览每个分区/目录来查找文件的情况下如何查找?


1
请在“原始文件”上展开。如果file1是符号链接file0怎么办?您是要找到符号链接(file0)的最后一个目标,还是仅找到下一个(symlink )的目标file1
don_crissti 2014年

Answers:


26

尝试这个 :

readlink -f /path/file

(如果有多个级别,则是符号链接的最后一个目标)

如果只需要下一级符号链接,请使用:

readlink /path/file

即时通讯没有输出
k-Rocker 2014年

你应该有一个!错误或路径
Gilles Quenot 2014年

没有什么:user@shell a5$ readlink -f ./student1.java我得到user@shell a5$
k-Rocker 2014年

nvm,我的符号链接设置不正确,不知道为什么。但我做了一个新的,它可以工作,谢谢。
k-Rocker 2014年

2
FWIW readlink /path/file将返回下一个目标。
don_crissti 2014年

2

1。

ls -l bin

生产

lrwxrwxrwx 1 az az 14 Ноя 12 22:13 bin -> ../Gdrive/bin/

2。

file bin

生产

bin: symbolic link to `../Gdrive/bin/' 

3。

stat bin

生产

File: «bin» -> «../Gdrive/bin/»

好的,我正在尝试制作脚本,那么我将如何使用这些脚本?我是Linux新手。
k-Rocker 2014年

1
@ k-Rocker如果您解释您打算做什么,那会更好。
Costas 2014年

1

最简单的方法:cd到符号链接所在的位置,并ls -l列出文件的详细信息。

->符号链接之后右侧的部分是它指向的目标。

例如:

lrwxrwxrwx 1 userName groupName 22 Jan 17 13:29链接到temp.txt-> /home/user/temp.txt

在这里,我们有“链接到temp.txt”,它指向(->)“ / home / user / temp.txt ”。

但是,就像@Gilles Quenot指出的那样,您也可以readlink -f /path/to/symbolic_link


0

在科斯塔斯扩展

假设你有

ln -s test.txt sym_link_1.txt
ls -l sym_link_1.txt
lrwxrwxrwx. 1 a1 g1 8 Jan  7 16:59 sym_link_1.txt -> test.txt

您可以在脚本中执行(使用反引号)

ln -s `readlink sym_link_1.txt` sym_link_2.txt

那你有

ls -l sym_link_*.txt
lrwxrwxrwx. 1 a1 g1 8 Jan  7 16:59 sym_link_1.txt -> test.txt
lrwxrwxrwx. 1 a1 g1 8 Jan  7 17:01 sym_link_2.txt -> test.txt

0

查找链接文件的另一种方法(以前没有回答)是使用以下命令,

file -h <path_to_dir>/* | grep link

命令

file -h /home/prateek/* | grep link

输出

/ home / prateek /音乐:指向/ media / prateek / HD-E1 / Music的符号链接

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.