¿Cómo puedo usar un solo ls
comando para mostrar todos los enlaces simbólicos en mi /dev
directorio?
Lo sé ls -l
y eso es todo.
fuente
¿Cómo puedo usar un solo ls
comando para mostrar todos los enlaces simbólicos en mi /dev
directorio?
Lo sé ls -l
y 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 l
condició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 -ls
acción con lo que prefiera ( -print
y -exec
que 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).
ls
una sola vez:find /dev -type l -exec ls -l {} +
.find ... -ls
no invoca ells
binario en absoluto. Como prueba, intente algo comostrace find . -ls 2>&1 | grep ls
y observe el hecho de que no hayls
invocaciones antes de que se imprima la salida. (strace
imprime 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