如何仅使用一个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 并不理想,但我不知道如何执行所有参数)。