Как я могу использовать одну единственную команду ls
для отображения всех символических ссылок в моем каталоге /dev
?
Я знаю ls -l
и это все.
Как я могу использовать одну единственную команду ls
для отображения всех символических ссылок в моем каталоге /dev
?
Я знаю ls -l
и это все.
Обычный способ сделать это - использовать 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 вообще плохая идея.
ls -l | grep ^ l
Создайте полный список и выберите.
Другое предлагаемое решение (find /dev -type l -ls) может быть более эффективным, поскольку оно не выводит полный список, но вызывает многократно ls, поэтому оно может быть менее эффективным. Я бы поспорил менее эффективно, но также «grep» ОЧЕНЬ полезен, и каждый должен понимать 'command | grep XXX ".
Вы можете использовать find и вызывать 'ls' только один раз, но это становится более сложным ... используя xargs или backticks
ls -l `find /dev -type l`
или может быть что-то вроде
find /dev -type l -print0 | xargs -0 -L99 ls -l
но это слишком уродливо для начинающих (-L 99 не идеален, но я не вижу, как сделать все аргументы).