如何以简短形式查找并列出所有符号链接?

问题描述 投票:0回答:1

我有大量目录和文件,以及许多符号链接,这些符号链接通常指向名为“共享”的目录或“共享”目录下的目录或文件。

这是一个表示:

$ ls -lR
total 0
drwxr-xr-x  5 myself  staff  160 Oct 11 11:54 a
drwxr-xr-x  5 myself  staff  160 Oct 11 11:55 b

./a:
total 0
lrwxr-xr-x  1 myself  staff  2 Oct 11 11:54 a2 -> a1
lrwxr-xr-x  1 myself  staff  2 Oct 11 11:54 a3 -> a2
lrwxr-xr-x  1 myself  staff  2 Oct 11 11:54 a4 -> a3

./b:
total 0
lrwxr-xr-x  1 myself  staff  2 Oct 11 11:54 b1 -> b2
lrwxr-xr-x  1 myself  staff  2 Oct 11 11:54 b2 -> b3
lrwxr-xr-x  1 myself  staff  2 Oct 11 11:55 b3 -> b4

如果我使用

find -type l
列出符号链接,我会得到这么长的输出:

12:00 $ find . -type l -ls
14800041 0 lrwxr-xr-x 1 myself staff 2 Oct 11 11:54 ./a/a4 -> a3
14800032 0 lrwxr-xr-x 1 myself staff 2 Oct 11 11:54 ./a/a3 -> a2
14799990 0 lrwxr-xr-x 1 myself staff 2 Oct 11 11:54 ./a/a2 -> a1
14800060 0 lrwxr-xr-x 1 myself staff 2 Oct 11 11:54 ./b/b2 -> b3
14800061 0 lrwxr-xr-x 1 myself staff 2 Oct 11 11:55 ./b/b3 -> b4
14800046 0 lrwxr-xr-x 1 myself staff 2 Oct 11 11:54 ./b/b1 -> b2

如果我使用

ls -lR
进行递归列表,我会得到类似的输出。

我只需要输出中的两位 - 符号链接名称及其指向的内容,用

->
分隔。如何在无需使用过滤器解析
ls
find
输出的情况下获得此输出?

linux find symlink ls
1个回答
1
投票

你可以试试

find . -type l -printf '%p -> %l\n'

或者如果 -printf 不可用,你也可以尝试

find . -type l -exec sh -c 'for link; do echo "$link -> $(readlink "$link")"; done' sh {} +

希望对你有帮助

© www.soinside.com 2019 - 2024. All rights reserved.