Mi sistema operativo y mi directorio personal están en una SSD. Guardo algunos archivos grandes en un disco duro y hago un enlace simbólico desde mi directorio de inicio al disco duro (por ejemplo, ~ / Videos / Films es un enlace simbólico a / mnt / hdd / Films). También tengo varios prefijos de Wine, cada uno de los cuales tiene dosdevices / z: enlazados a /.
Entonces, si usé find sin -L, se perderá todo lo que está en el disco duro. Pero si uso find con -L, termina en un bucle debido al enlace simbólico de Wine a /.
¿Hay alguna forma sensata de resolver esto, de modo que encuentre búsquedas donde quiero que lo haga? Intuitivamente, quiero algo parecido a "seguir enlaces simbólicos, a menos que estén en un directorio llamado dosdevices". "Seguir enlaces simbólicos que son de algo en el disco duro" también funcionaría.
-prune
es justo el tipo de cosas que estaba buscando. He encontrado quefind ~ \( -lname ~ -o -lname ~/\* -o -lname / \) -xtype d
enumera todos los enlaces simbólicos que no quiero seguir; Ahora estoy tratando de encontrar una manera de usar esa consulta para podar.find ~ <negative criteria> -prune -o <positive criteria> -print
, entoncesfind ~ \( -lname ~ -o -lname ~/\* -o -lname / \) -xtype d -prune -o <whatever it is you want> -print
Para buscar TODOS los enlaces, esto funcionó para mí:
fuente
¿Cuántos enlaces simbólicos a discos duros tiene? Si no es demasiada, una solución es no usar "-L" mientras especifica explícitamente los enlaces simbólicos que desea seguir en la línea de comando de búsqueda. Algo como:
Esto buscará el directorio actual (".") Así como el enlace simbólico "~ / Videos / Films" pero no descenderá a otros enlaces simbólicos.
fuente
Otra solución que evita el problema (al menos para mi caso) es usar montajes de enlace en lugar de enlaces simbólicos para los directorios en el disco duro. Esto se hace agregando entradas de
/etc/fstab
esta manera:/mnt/hdd/Films /home/mark/Videos/Films none bind 0 0
fuente