Con el comando:
ls -la *
Puedo enumerar todos mis enlaces simbólicos.
¿Cómo puedo eliminar todos los enlaces simbólicos que están vinculados a una carpeta especial?
Por ejemplo:
En mi directorio usr/local/bin
tengo las siguientes entradas:
lrwxrwxrwx 1 root root 50 Apr 22 14:52 allneeded -> /usr/local/texlive/2011/bin/x86_64-linux/allneeded
lrwxrwxrwx 1 root root 47 Apr 22 14:52 amstex -> /usr/local/texlive/2011/bin/x86_64-linux/amstex
lrwxrwxrwx 1 root root 24 Apr 23 19:09 arara -> /home/marco/.arara/arara
Ahora quiero eliminar todos los enlaces con la ruta /usr/local/texlive/
Respuestas:
Asegúrate de leer la respuesta alternativa . Es aún más importante, aunque no se ha votado tan alto en este momento.
Puede usar esto para eliminar todos los enlaces simbólicos:
Con
find
versiones modernas .En versiones anteriores de búsqueda, puede ser:
Para limitar a un determinado objetivo de enlace, suponiendo que ninguna de las rutas contiene ningún carácter de nueva línea:
o bien formateado
Por
if
supuesto, también podría incluir una condición más compleja, como hacer coincidir un patrón congrep
.Adaptado a su caso:
o bien formateado:
fuente
-print
al final delfind
comando para obtener algunos comentarios visuales.Con un moderno
find
que soporta-lname
:Deberías hacerlo.
fuente
find /usr/local/bin
find
ha tenido-lname
más tiempo del que lo he mantenido (desde alrededor de 2003).find
realmente me refería a GNUfind
. ;) Yo solíausr/local/bin
, porque eso es lo que usaba el OP.La
find
solución es genial.En caso de que su búsqueda no sea compatible
-lname
, aquí hay otra forma que solo usa shell yreadlink
.fuente
Con
zsh
:$REPLY:P
resuelve completamente la ruta de acceso a uno sin enlace simbólico, por lo que suponiendo que/usr/local/texlive
esté libre de enlace simbólico en sí mismo, eliminaría todos los archivos que, después de la resolución de enlace simbólico, viven bajo los/usr/local/textlive
cuales incluiría enlaces/usr/local/texlive/foo
pero también../texlive/bar
ao hacia/usr/./local/texlive/whatever
o a los/some/other/symlink
cuales es un enlace simbólico que apunta/usr/local/texlive
, etc. .fuente
Ir a la ruta de acceso y establecer la configuración de ruta
fuente
usr/local/bin
esegrep
, estegrep -E
es el camino a seguir. De lo contrario, no habría resultados coincidentes. Tambiénh
enls
no sirve a ningún propósito aquí!-h, --human-readable : with -l, print sizes in human readable format (e.g., 1K 234M 2G)
. Para más verman ls
oman grep