¿Cómo puedo usar un solo lscomando para mostrar todos los enlaces simbólicos en mi /devdirectorio?
Lo sé ls -ly eso es todo.
fuente
¿Cómo puedo usar un solo lscomando para mostrar todos los enlaces simbólicos en mi /devdirectorio?
Lo sé ls -ly eso es todo.
La forma normal de hacer esto sería usar find, si está disponible. Con GNU find (y posiblemente otros), puede hacer:
find /dev -type l -ls
donde la -type lcondición dice que coinciden solo con enlaces simbólicos. Esto le dará salida como (copiando solo unas pocas líneas aquí):
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
Puede reemplazar la -lsacción con lo que prefiera ( -printy -execque le parezca útil).
Aparte de eso, supongo que podría usar algo como ls -l /dev/disk/by-id | grep ^l, pero analizar la salida de ls generalmente es una mala idea .
ls -l | grep ^ l
Genere una lista completa y seleccione.
La otra solución ofrecida (find / dev -type l -ls) podría ser más eficiente ya que no hace la lista completa, pero invoca 'ls' varias veces, por lo que puede ser menos eficiente. Apuesto a que es menos eficiente, pero también 'grep' es MUY útil y todos deberían entender 'comando | grep XXX ".
Puede usar find y solo invocar 'ls' una vez, pero se vuelve más complicado ... usando xargs o backticks
ls -l `find /dev -type l`
o tal vez algo como
find /dev -type l -print0 | xargs -0 -L99 ls -l
pero es demasiado feo para principiantes (-L 99 no es ideal, pero no veo cómo hacer todos los argumentos).
lsuna sola vez:find /dev -type l -exec ls -l {} +.find ... -lsno invoca ellsbinario en absoluto. Como prueba, intente algo comostrace find . -ls 2>&1 | grep lsy observe el hecho de que no haylsinvocaciones antes de que se imprima la salida. (straceimprime todas las llamadas al sistema realizadas por una aplicación, comenzando en su propia llamada para ejecutar el comando dado). Ahora, algo similar afind ... -exec ls '{}' ';'(y posiblemente incluso+, dependiendo del número de archivos involucrados) es diferente, pero eso no es lo que de que estas hablando