如何在Linux上列出符号链接

时间:2020-03-21 11:46:42  来源:igfitidea点击:

我们已经知道什么是符号链接或者符号链接或者软链接以及如何从我们的Linux系统查找和删除破坏的符号链接。

今天,我们将学习如何在Linux上列出符号链接。
如果我们已经长时间创建了一些符号链接并且完全忘记了它们,则此快速提示将轻松使用"find"命令。

列出Linux上的符号链接

要列出Linux系统中的所有符号链接或者符号链接或者软链接,请运行:

$sudo find / -type l

其中

  • / - 表示整个文件系统。
  • -type - 引用文件类型。
  • l - 引用符号链接。

此命令将搜索整个文件系统中的所有可用符号链接。
取决于文件系统的大小,需要一段时间。
请耐心等待!

如果要限制特定目录中的Symlink搜索,请提及其路径,如下所示。

例如,以下命令将列出当前目录中的所有软链接:

$find . -type l

请注意上面的命令中的单点(.)。
在Linux中,单点(.)用于表示当前(当前)目录。
双点(..)用于表示父目录。

示例输出:

./snap/multipass/current
./snap/multipass/1597/.config/autostart
./snap/multipass/1597/config/autostart/multipass.gui.autostart.desktop
./snap/multipass/1784/.config/autostart
./snap/multipass/1784/config/autostart/multipass.gui.autostart.desktop
./.local/share/webkitgtk/databases/indexeddb/v0
find: ‘./.dbus’: Permission denied
./.config/spyder-py3/spyder.lock
./Downloads/Tor browser/Browser/.config/ibus/bus
./.mozilla/firefox/htoypxlg.default-1563118799416/lock

如果要在不同的目录中搜索符号链接,请将点(.)替换为目录路径。

如果我们想要详细的输出,包括时间戳,文件权限,所有者和组,请使用以下命令(而不是以下命令:

$find . -type l -ls

示例输出:

4458987      0 lrwxrwxrwx   1 sk       sk              4 Mar  6 13:58 ./snap/multipass/current -> 1784
 11927799      0 lrwxrwxrwx   1 sk       sk             19 Mar  5 11:20 ./snap/multipass/1597/.config/autostart -> ../config/autostart
 11932200      4 lrwxrwxrwx   1 sk       sk             72 Nov 27 15:30 ./snap/multipass/1597/config/autostart/multipass.gui.autostart.desktop -> /snap/multipass/1597/usr/share/multipass/multipass.gui.autostart.desktop
 11534358      0 lrwxrwxrwx   1 sk       sk             19 Mar 17 11:51 ./snap/multipass/1784/.config/autostart -> ../config/autostart
 11666096      4 lrwxrwxrwx   1 sk       sk             72 Mar  6 13:58 ./snap/multipass/1784/config/autostart/multipass.gui.autostart.desktop -> /snap/multipass/1784/usr/share/multipass/multipass.gui.autostart.desktop
  5246237      0 lrwxrwxrwx   1 sk       sk             51 Nov 12 20:14 ./.local/share/webkitgtk/databases/indexeddb/v0 -> /home/sk/.local/share/webkitgtk/databases/indexeddb
find: ‘./.dbus’: Permission denied
  4459630      0 lrwxrwxrwx   1 sk       sk              5 Jan 24 17:39 ./.config/spyder-py3/spyder.lock -> 18461
  4340805      0 lrwxrwxrwx   1 sk       sk             25 Nov 15 15:21 ./Downloads/Tor\ browser/Browser/.config/ibus/bus -> /home/sk/.config/ibus/bus
  4328111      0 lrwxrwxrwx   1 sk       sk             20 Mar 17 11:56 ./.mozilla/firefox/htoypxlg.default-1563118799416/lock -> 192.168.225.37:+2642

由于我们可能已经注意到上面的输出中,查找命令在当前目录和其子目录中搜索符号链接。

如果要列出当前目录中的一个级别的所有符号链接,请使用如下所示的MaxDepth标志。

$find . -maxdepth 1 -type l

另一种方法可以找到当前目录中的符号链接列表:

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

这将递归地列出当前目录中的所有符号链接。
而且,它显示它指向的实际文件。

示例输出:

./snap/multipass/current -> 1784
./snap/multipass/1597/.config/autostart -> ../config/autostart
./snap/multipass/1597/config/autostart/multipass.gui.autostart.desktop -> /snap/multipass/1597/usr/share/multipass/multipass.gui.autostart.desktop
./snap/multipass/1784/.config/autostart -> ../config/autostart
./snap/multipass/1784/config/autostart/multipass.gui.autostart.desktop -> /snap/multipass/1784/usr/share/multipass/multipass.gui.autostart.desktop
./.local/share/webkitgtk/databases/indexeddb/v0 -> /home/sk/.local/share/webkitgtk/databases/indexeddb
find: ‘./.dbus’: Permission denied
./.config/spyder-py3/spyder.lock -> 18461
./Downloads/Tor browser/Browser/.config/ibus/bus -> /home/sk/.config/ibus/bus
./.mozilla/firefox/htoypxlg.default-1563118799416/lock -> 192.168.225.37:+2642

有关更多详细信息,请参阅Man页面。

$man find