我目前正在使用以下命令列出系统上的所有符号链接。
ls -lR . | grep ^l > /usr/local/docato-composer/all-sym-links.txt
从输出中取出的一行
lrwxrwxrwx 1 root root 12 Jul 19 2010 sd3d -> dsk/c0t0d0s3
我们正在将应用程序移植到专用服务器,因此我需要获取所有符号链接,然后手动查找特定于应用程序的应用程序,以便在新服务器中重新创建它们。如何使用绝对路径(/ folder1 / folder2 / sd3d而不是sd3d)列出系统上的所有符号链接?
答案 0 :(得分:2)
我认为find . -type l -ls
是您正在寻找的命令。 (您可能希望删除/ proc文件系统等。)
样本输出的摘录(略微编辑以使其适合):
678 0 lrwxrwxrwx 1 root root 6 Oct 25 2014 /bin/open -> openvt
141 0 lrwxrwxrwx 1 root root 8 Feb 26 2015 /bin/ypdomainname -> hostname
153 0 lrwxrwxrwx 1 root root 20 Feb 26 2015 /bin/mt -> /etc/alternatives/mt
155 0 lrwxrwxrwx 1 root root 4 Feb 26 2015 /bin/sh.distrib -> dash
5568 0 lrwxrwxrwx 1 root root 14 Apr 6 2015 /bin/pidof -> /sbin/killall5
答案 1 :(得分:0)
我会做类似的事情:
find . -type l -printf "\r\n%p -> %l"
当然,您可以使用您需要的任何分隔符,而不是->
。
答案 2 :(得分:0)
以递归方式显示当前目录中的符号链接,但没有关注它们,显示完整路径和其他信息:
find ./ -type l -print0 | xargs -0 ls -plah
输出看起来像这样:
lrwxrwxrwx 1 apache develop 99 Dec 5 12:49 ./dir/dir2/symlink1 -> /dir3/symlinkTarget
lrwxrwxrwx 1 apache develop 81 Jan 10 14:02 ./dir1/dir2/dir4/symlink2 -> /dir5/whatever/symlink2Target
etc...