Pergunta

Basicamente eu quero fazer o seguinte:

ls -l[+someflags]

(ou por outros meios) que só irá exibir arquivos que são links simbólicos

então a saída seria

-rw-r--r--  1 username grp   size date-time    filename -> somedir
-rw-r--r--  1 username grp   size date-time    filename2 -> somsdfsdf

etc.

Por exemplo,

para mostrar apenas diretórios eu tenho um apelido:

alias  lsd  'ls -l | grep ^d'

Gostaria de saber como exibir apenas arquivos ocultos ou somente diretórios ocultos?

Eu tenho a seguinte solução, no entanto, não exibir a saída de cor: (

ls -ltra | grep '\->'
Foi útil?

Solução

Encontre todos os links simbólicos em um diretório:

ls -l `find /usr/bin -maxdepth 1 -type l -print`

Para a listagem de arquivos escondidos:

ls -ald .*

Outras dicas

ls -l | grep lrw 

mostra apenas links simbólicos (arquivos e diretórios). Não tenho certeza como obtê-los colorido, apesar de tudo.

ls -lad .* 

Mostra somente os arquivos ocultos / diretórios

ls -l | grep drw

Mostra diretórios somente.

Por apenas "escondido" pastas - as pastas ponto, tentar:

ls -l .**

Sim, os dois asteriscos são necessárias, caso contrário você vai também obter. e .. nos resultados.

Para links simbólicos, bem, tente o programa de links simbólicos:

symlinks -v .

(mostra todos os links simbólicos sob o diretório atual)

Para exibir apenas os links simbólicos e que eles conectar-se a:

find -P . -type l -exec echo -n "{} -> " \; -exec readlink {} \;

Para limitar apenas a este DIR

find -P .  -maxdepth 1 -type l -exec echo -n "{} -> " \; -exec readlink {} \;

Exemplo de saída (após ln -s / usr / bin moo):

./moo -> /usr/bin

Você estava quase lá com a sua solução grep; Vamos nos concentrar em obter-lhe cor de novo.

Tente isto:

ls --color=always -ltra | grep '->'

Melhorar um pouco sobre a resposta aceita dada pelo @ChristopheD (comentário coudnt na resposta aceita desde que eu não tenho reputação suficiente)

Eu uso um alias

findsymlinks <path> <depth> 

onde o alias é

alias findsymlinks "find \!:1 -maxdepth \!:2 -type l -print | xargs ls -l --color=auto" 

Tente tipo flag arquivo e se livrar da acrescentando @

ls -F /home/usr/foo | grep "@" | sed 's/@//'

Para (t) csh :

ls --color=always -ltra | grep '\->'

(Isto é simplesmente da PBR resposta mas com o hífen escapou.)

Mac OSX

No OSX, ls funciona de forma diferente, então adicioná-lo ao seu arquivo ~/.cshrc:

setenv CLICOLOR_FORCE 1   # (equivalent of Linux --color=always)

E, em seguida, ligue para:

ls -G -ltra | grep '\->'  # (-G is equivalent of ls --color)

Para bash:
Este fornece uma saída agradável.

sl=`find -L /path/to/target -xtype l`; for links in $sl; do ls --color=always -ltra $links; done | sed 's/^/    /'
echo > linklist.found && $(for i in `find /path/to/dir/ -type l`; do echo `ls -d --color=always  $i` `echo " -> "`  $(ls -d --color=always `readlink -f $i`) >> linklist.found; echo >> linklist.found;  done;) && cat linklist.found | more

Este bom funciona para mim no entanto, se você vai estar procurando / a raiz do sistema de arquivos você precisará omitir o diretório proc

Uso: foo $ path

Usa caminho atual se nenhum especificado.

#!/bin/bash

case "$1" in

    -r)
    find $2 -type l -print | while IFS= read line ; do ls -l --color=always "$line"; done
    ;;

    --help)
    echo 'Usage: foo [-r] [$PATH]'
    echo    
    echo '-r  Recursive'
    ;;


    *)
    ls --color=always -ltra $1 | grep '\->'
esac
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top