Pregunta

Básicamente quiero hacer lo siguiente:

ls -l[+someflags]

(o por algún otro medio) que solo mostrará archivos que son enlaces simbólicos

para que la salida se vea

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

etc.

Por ejemplo,

para mostrar solo los directorios que tengo un alias:

alias  lsd  'ls -l | grep ^d'

¿Me pregunto cómo mostrar solo los archivos ocultos o solo los directorios ocultos?

Tengo la siguiente solución, sin embargo, no muestra la salida en color :(

ls -ltra | grep '\->'
¿Fue útil?

Solución

Encuentre todos los enlaces simbólicos en un directorio:

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

Para la lista de archivos ocultos:

ls -ald .*

Otros consejos

ls -l | grep lrw 

muestra solo enlaces simbólicos (archivos y directorios). Sin embargo, no estoy seguro de cómo obtener colores.

ls -lad .* 

muestra solo archivos / directorios ocultos

ls -l | grep drw

muestra solo directorios.

Por solo " oculto " carpetas - carpetas de puntos, intente:

ls -l .**

Sí, los dos asteriscos son necesarios, de lo contrario también obtendrás. y ... en los resultados.

Para enlaces simbólicos, bueno, prueba el programa de enlaces simbólicos:

symlinks -v .

(muestra todos los enlaces simbólicos en el directorio actual)

Para mostrar SÓLO los enlaces simbólicos y sus vínculos con:

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

Para limitar a SOLO ESTE DIR

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

Salida de ejemplo (después de ln -s / usr / bin moo):

./moo -> /usr/bin

Estabas casi allí con tu solución grep; concentrémonos en conseguirle COLOR nuevamente.

Prueba esto:

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

Mejorando un poco la respuesta aceptada dada por @ChristopheD (podría hacer un comentario sobre la respuesta aceptada ya que no tengo suficiente reputación)

Uso un alias

findsymlinks <path> <depth> 

donde está el alias

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

Pruebe el indicador de tipo de archivo y elimine los @

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

Para (t) csh :

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

(Esto es simplemente respuesta de pbr pero con el guión escapado.)

Mac OSX

En OSX, ls funciona de manera diferente, así que agréguelo a su archivo ~ / .cshrc :

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

Y luego llame:

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

Para bash:
Esto proporciona un buen resultado.

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

Esto funciona bien para mí, sin embargo, si va a buscar / la raíz del sistema de archivos, deberá omitir el directorio de proceso

Uso: foo $ path

Utiliza la ruta actual si no se especifica ninguna.

#!/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 bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top