La pregunta se refiere al scripting de shell en bash.
¿Cómo verificar con un script qué archivos dentro del directorio actual son enlaces blandos?
En caso de que haya usado un término incorrecto, cuando digo enlaces suaves , me refiero a los archivos creados con ln -s.
Lo único que he logrado pensar es evaluar ls -lacomo una expresión y analizar sus resultados, pero obviamente esta no es la mejor solución.
bash
symbolic-link
ls
shell-script
ln
bguiz
fuente
fuente

Respuestas:
Consulte 'EXPRESIONES CONDICIONALES' en
man bash- en este caso desea-h:fuente
test -hes lo que quería!Es posible que realmente no necesite un script. Para mostrar los enlaces simbólicos solo en la carpeta actual, sin recurrir a ninguna carpeta secundaria:
O, para obtener más información, use uno de:
encontrar . -maxdepth 1 -tipo l -exec ls -ld {} + encontrar . -maxdepth 1 -type l -print0 | xargs -0 ls -ldPara saber si un archivo es un enlace simbólico, se puede usar
readlink, que no generará nada si no es un enlace simbólico. El siguiente ejemplo no es muy útil, pero muestra cómoreadlinkignora los archivos y carpetas normales. Use uno de:encontrar . -maxdepth 1 -exec readlink {} + encontrar . -maxdepth 1 -print0 | xargs -0 readlinkTenga en cuenta que los anteriores
-exec ... +yxargs ...son mucho más rápidos que-exec ... \;. Me gusta:hora find / usr / bin -maxdepth 1 -type l -exec ls -ld {} \; 0m0.372s reales usuario 0m0.087s sys 0m0.163s tiempo find / usr / bin -maxdepth 1 -type l -exec ls -ld {} + 0m0.013 reales usuario 0m0.004s sys 0m0.008s tiempo find / usr / bin -maxdepth 1 -type l -print0 | xargs -0 ls -ld 0m0.012s reales usuario 0m0.004s sys 0m0.009sfuente
xargses mucho más rápido en mi Mac; mira mi edición Pero he aprendido algo nuevo hoy: También existe+en lugar de\;(Aunque algunos afirman que esto tiene / tenía problemas congrep.)