Foros del Web » Administración de Sistemas » Unix / Linux »

'find' para eliminar enlaces muertos...

Estas en el tema de 'find' para eliminar enlaces muertos... en el foro de Unix / Linux en Foros del Web. Buenas foro: Quisiera saber como con el comando 'find' se podría dar la orden para que borrara todos los enlaces que actualmente no apuntan a ...
  #1 (permalink)  
Antiguo 22/02/2006, 22:34
Avatar de nekcab  
Fecha de Ingreso: noviembre-2004
Mensajes: 223
Antigüedad: 20 años
Puntos: 0
'find' para eliminar enlaces muertos...

Buenas foro:
Quisiera saber como con el comando 'find' se podría dar la orden para que borrara todos los enlaces que actualmente no apuntan a ningún arch. ( pq.previamente yo haya borrado el arch.origen ).
Según el manual de 'find' hay la opción:
Cita:
-follow Desreferencia enlaces simbólicos. Implica -noleaf.
pero tampoco es que me ayude, dado que más bien necesito que me busque enlaces DES-referenciados, ya que para eliminarlos ya tengo el parámetro: "-exec". Con lo que entiendo que debiera ser algo así como:
[/center]find /usr ..... -exec rm -f {} \;[/center]
¿¿¿Alguien que se haya peleado mucho con el comando 'find' ????
  #2 (permalink)  
Antiguo 23/02/2006, 06:48
Avatar de srabadie  
Fecha de Ingreso: junio-2005
Mensajes: 1.391
Antigüedad: 19 años, 4 meses
Puntos: 2
Cita:
-follow Desreferencia enlaces simbólicos. Implica -noleaf.
No le encuentro significado a esa explicación, me explico: ¿Qué es desreferenciar un enlace simbólico? Un enlace simbólico siempre tiene que apuntar a algo (aunque ese algo no exista). Imagino que es el fruto de una mala traducción del manual original, aunque mi nivel de inglés no me permite asegurarlo

En fín, básicamente lo que hace la opción -follow (según las pruebas que he hecho) es seguir los enlaces simbólicos. Es decir, supongamos que yo tengo un enlace simbólico a un directorio en /usr/carpeta apuntando a /carpeta. Pues si hago un "find /usr cadena" no buscará en /carpeta, mientras que si hago un "find /usr cadena -follow" sí que buscará en /carpeta.


Cita:
Con lo que entiendo que debiera ser algo así como:
find /usr ..... -exec rm -f {} \;
Si alguna vez lo consigues, te recomiendo encarecidamente que cambies esa 'f' (de rm -f) por una 'i' (rm -i) para que tengas el control absoluto de lo que se borra y lo que no, ya que necesitarás permisos de superusuario para hacer esa tarea (que además, consiste en eliminar ficheros) y un pequeño error podría traer graves consecuencias.


Saludos.
__________________
"La libertad no hace felices a los hombres; los hace sencillamente hombres" - Manuel Azaña.
  #3 (permalink)  
Antiguo 23/02/2006, 11:18
Avatar de nekcab  
Fecha de Ingreso: noviembre-2004
Mensajes: 223
Antigüedad: 20 años
Puntos: 0
Ya imaginé que la opción: "-follow" no iba bien encaminada hacia lo que pretendía. Asi que si alguien se ha visto en la misma tesitura de querer eliminar buscar y eliminar enlaces muertos, soy todo ojos....
  #4 (permalink)  
Antiguo 14/03/2006, 06:47
Avatar de nekcab  
Fecha de Ingreso: noviembre-2004
Mensajes: 223
Antigüedad: 20 años
Puntos: 0
Al final los buenos de 'hackxcrack' me lo han descubierto:
Cita:
find / -type l -print | perl -nle '-e || print'
Y si fueran muchos a eliminar:
1.- 1º que los busque:
Cita:
find / -type l -print | perl -nle '-e || print' >/tmp/deadlinks.txt
2.- Y a continuación los borre todos:
Cita:
rm `/tmp/deadlinks.txt`
  #5 (permalink)  
Antiguo 14/03/2006, 08:37
Avatar de srabadie  
Fecha de Ingreso: junio-2005
Mensajes: 1.391
Antigüedad: 19 años, 4 meses
Puntos: 2
Estupendo tip que no perderé de vista.


Saludos.
__________________
"La libertad no hace felices a los hombres; los hace sencillamente hombres" - Manuel Azaña.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:15.