Domanda

Fondamentalmente voglio fare quanto segue:

ls -l[+someflags]

(o in qualche altro modo) che visualizzerà solo file che sono collegamenti simbolici

in modo che l'output sembrerebbe

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

ecc.

Ad esempio,

per mostrare solo le directory che ho un alias:

alias  lsd  'ls -l | grep ^d'

Mi chiedo come visualizzare solo file nascosti o solo directory nascoste?

Ho la seguente soluzione, tuttavia non visualizza l'output a colori :(

ls -ltra | grep '\->'
È stato utile?

Soluzione

Trova tutti i collegamenti simbolici in una directory:

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

Per l'elenco dei file nascosti:

ls -ald .*

Altri suggerimenti

ls -l | grep lrw 

mostra solo i collegamenti simbolici (file e directory). Non sono sicuro di come renderli colorati, tuttavia.

ls -lad .* 

mostra solo file / directory nascosti

ls -l | grep drw

mostra solo le directory.

Solo per " nascosto " cartelle - dot cartelle, prova:

ls -l .**

Sì, i due asterischi sono necessari, altrimenti otterrai anche. e .. nei risultati.

Per i link simbolici, prova il programma symlink:

symlinks -v .

(mostra tutti i collegamenti simbolici nella directory corrente)

Per visualizzare SOLO i symlink e ciò a cui si collegano:

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

Limitare a SOLO QUESTA DIR

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

Esempio di output (dopo ln -s / usr / bin moo):

./moo -> /usr/bin

Eri quasi lì con la tua soluzione grep; concentriamoci sul farti di nuovo COLORE.

Prova questo:

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

Migliorare un po 'la risposta accettata data da @ChristopheD (commento coudnt sulla risposta accettata poiché non ho abbastanza reputazione)

Uso un alias

findsymlinks <path> <depth> 

dove si trova l'alias

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

Prova il flag del tipo di file ed elimina l'aggiunta @

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

Per (t) csh :

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

(Questa è semplicemente la risposta di pbr ma con il trattino scappato.)

Mac OSX

Su OSX, ls funziona in modo diverso, quindi aggiungilo al tuo file ~ / .cshrc :

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

E poi chiama:

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

Per bash:
Questo fornisce un buon risultato.

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

Questo funziona bene per me, tuttavia se stai cercando / la radice del filesystem dovrai omettere la directory proc

Utilizzo: foo $ path

Utilizza il percorso corrente se non specificato.

#!/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
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top