一行 ls 命令显示符号链接

一行 ls 命令显示符号链接

如何仅使用一个ls命令来显示/dev目录中的所有符号链接?

我知道ls -l,就是这样。

答案1

find正常情况下,如果可用,可以使用。使用 GNU find(可能还有其他),您可以执行以下操作:

find /dev -type l -ls

其中-type l条件表示仅匹配符号链接。这将为您提供如下输出(此处仅复制几行):

1971    0 lrwxrwxrwx   1 root     root           10 Mar 25 19:29 /dev/disk/by-uuid/593596f4-a5a1-4e87-b985-b0196c2a067b -> ../../sda3
1952    0 lrwxrwxrwx   1 root     root           10 Mar 25 19:31 /dev/disk/by-uuid/7db08eaf-1d68-4aa3-a8e0-7e62489efb0f -> ../../sdb1
1933    0 lrwxrwxrwx   1 root     root           10 Mar 25 19:29 /dev/disk/by-uuid/a2d18bff-a710-43a8-b41a-fb39b814a165 -> ../../sda1
4209    0 lrwxrwxrwx   1 root     root           10 Mar 26 08:22 /dev/disk/by-path/pci-0000:00:12.2-usb-0:3:1.0-scsi-0:0:0:0-part1 -> ../../sdc1

您可以-ls用任何您喜欢的(-print并且-exec认为有用的)操作来替换该操作。

除此之外,我想你可以使用类似的东西ls -l /dev/disk/by-id | grep ^l,但是解析 ls 的输出通常不是一个好主意

答案2

ls -l |删除 ^l

生成完整列表并选择。

提供的其他解决方案(find /dev -type l -ls)可能更有效,因为它不会进行完整列表,但它会多次调用“ls”,因此效率可能较低。我敢打赌效率较低,但“grep”也非常有用,每个人都应该理解“command | grep XXX”。

您可以使用 find 并仅调用一次“ls”,但它会变得更加复杂......使用 xargs 或反引号

ls -l `find /dev -type l`

或者可能是类似

find /dev -type l -print0 | xargs -0 -L99 ls -l

但对于初学者来说它太丑了(-L 99 并不理想,但我不知道如何执行所有参数)。

相关内容