Um comando line ls para exibir links simbólicos

3

Como posso usar apenas um único comando ls para exibir todos os links simbólicos no meu diretório /dev ?

Eu sei ls -l e é sobre isso.

    
por Jurgen Malinao 27.03.2013 / 15:49

2 respostas

8

A maneira normal de fazer isso seria usar find , se estiver disponível. Com o GNU find (e possivelmente outros), você pode fazer:

find /dev -type l -ls

em que a condição -type l diz que corresponde apenas aos links simbólicos. Isto lhe dará saída como (copiando apenas algumas linhas aqui):

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

Você pode substituir a ação -ls pelo que preferir ( -print e -exec parecem úteis).

Além disso, suponho que você poderia usar algo como ls -l /dev/disk/by-id | grep ^l , mas analisar a saída de ls é geralmente uma má idéia .

    
por 27.03.2013 / 15:55
0

ls -l | grep ^ l

Gere uma listagem completa e selecione.

A outra solução oferecida (find / dev -type l -ls) pode ser mais eficiente, pois não faz a listagem completa, mas invoca o comando ls várias vezes, o que talvez seja menos eficiente. Eu apostaria menos eficiente, mas também 'grep' é MUITO útil e todo mundo deveria entender 'comando | grep XXX ".

Você pode usar find e só invocar 'ls' uma vez, mas fica mais complicado ... usando xargs ou backticks

ls -l 'find /dev -type l'

ou talvez algo como

find /dev -type l -print0 | xargs -0 -L99 ls -l

mas é muito feio para iniciantes (-L 99 não é o ideal, mas eu não vejo como fazer todos os args).

    
por 14.11.2013 / 17:06