Esta pregunta habla sobre la búsqueda de directorios en un directorio actual. La solución es básicamente:
ls -d */
Eso es genial, pero ¿cómo puedo enumerar fácilmente los enlaces simbólicos? ¿Tengo que usar algo como
find . -xtype l -d 1
(intended to find symlinks max depth 1 - doesn't work)
¿O hay una forma más fácil? ¿Se puede usar para esto?
man find
programas que-d
es sinónimo de-depth
(por compatibilidad con FreeBSD, NetBSD, MacOS X y OpenBSD), es decir. No es lo mismo que-maxdepth
. . .-depth
Procese el contenido de cada directorio antes que el directorio en sí mismoRespuestas:
En zsh (agregue
N
dentro de los paréntesis para incluir enlaces simbólicos cuyo nombre comience con a.
):Con la mayoría de las
find
implementaciones:Compatible con POSIX:
O con un bucle de shell:
fuente
-prune
opción, debe usarfind topdir ! -name topdir -prune
; de lo contrario, el directorio inicial también se ignora.Esto no está en una Mac, pero
funciona para mi.
fuente
Debería usar
-type
y no-xtype
:El valor predeterminado es
-P
, por lo que la opción -xtype intentará determinar el archivo resultante, no el enlace simbólico en sí. En realidad, obtengo algunos resultados positivos, lo que parece un error. El-P -xtype l
debería devolver verdadero (en un enlace simbólico) si el resultante es en sí mismo un enlace simbólico.También se puede usar:
ls -FA | sed -ne 's/@//p'
que mostrará solo los enlaces simbólicos.fuente
sed -ne 's/@//p'
(e inclusosed -ne 's/@$//p'
) no es una prueba segura, ya que la primera versión dará un falso positivo cuando@
ocurra en cualquier parte de la salida ls , y la segunda devolverá un falso positivo cuando un nombre de archivo realmente termine en@
Para descubrir solo los archivos que son enlaces simbólicos dentro del directorio actual:
Esto enumerará recursivamente todos los archivos de enlaces simbólicos. Además, muestra los archivos reales a los que apunta.
fuente