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 -la
como 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 -h
es 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:
Para 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ómoreadlink
ignora los archivos y carpetas normales. Use uno de:Tenga en cuenta que los anteriores
-exec ... +
yxargs ...
son mucho más rápidos que-exec ... \;
. Me gusta:fuente
xargs
es 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
.)