如何在Unix系统

时间:2016-01-21 14:02:35

标签: unix symlink ls

我目前正在使用以下命令列出系统上的所有符号链接。

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)列出系统上的所有符号链接?

3 个答案:

答案 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...