¿Cómo puedo usar un solo lscomando para mostrar todos los enlaces simbólicos en mi /devdirectorio?
Lo sé ls -ly eso es todo.
¿Cómo puedo usar un solo lscomando para mostrar todos los enlaces simbólicos en mi /devdirectorio?
Lo sé ls -ly eso es todo.
Respuestas:
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).
find ... -lsno invoca el lsbinario en absoluto. Como prueba, intente algo como strace find . -ls 2>&1 | grep lsy observe el hecho de que no hay lsinvocaciones 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 a find ... -exec ls '{}' ';'(y posiblemente incluso +, dependiendo del número de archivos involucrados) es diferente, pero eso no es lo que de que estas hablando
lsuna sola vez:find /dev -type l -exec ls -l {} +.