Mon système d'exploitation et mon répertoire personnel se trouvent sur un SSD. Je stocke des fichiers volumineux sur un disque dur et un lien symbolique de mon répertoire personnel vers le disque dur (par exemple, ~ / Videos / Films est un lien symbolique vers / mnt / hdd / Films). J'ai également un certain nombre de préfixes Wine, dont chacun a dosdevices / z: un lien symbolique vers /.
Donc, si j'ai utilisé find sans -L, il manquera tout ce qui se trouve sur le disque dur. Mais si j'utilise find avec -L, il se retrouve dans une boucle en raison du lien symbolique de Wine vers /.
Existe-t-il un moyen judicieux de résoudre ce problème, afin de trouver les recherches là où je le souhaite? Intuitivement, je veux quelque chose dans le sens de "suivre les liens symboliques, sauf s'ils se trouvent dans un répertoire appelé dosdevices". "Suivre les liens symboliques vers un élément du disque dur" fonctionnerait également.
-prune
est juste le genre de chose que je cherchais. J'ai trouvé que lafind ~ \( -lname ~ -o -lname ~/\* -o -lname / \) -xtype d
liste de tous les liens symboliques que je ne veux pas suivre; J'essaie maintenant de trouver un moyen d'utiliser cette requête pour tailler.find ~ <negative criteria> -prune -o <positive criteria> -print
, alorsfind ~ \( -lname ~ -o -lname ~/\* -o -lname / \) -xtype d -prune -o <whatever it is you want> -print
Pour rechercher TOUS les liens, cela a fonctionné pour moi:
la source
Combien de liens symboliques vers des disques durs avez-vous? Si ce n'est pas trop, une solution consiste à ne pas utiliser "-L" tout en spécifiant explicitement les liens symboliques que vous souhaitez suivre sur la ligne de commande find. Quelque chose comme:
Ceci recherchera le répertoire courant (".") Ainsi que le lien symbolique "~ / Videos / Films" mais ne descendra pas dans d'autres liens symboliques.
la source
Une autre solution qui contourne le problème (au moins pour mon cas) consiste à utiliser des montures de liaison au lieu de liens symboliques pour les répertoires sur le disque dur. Cela se fait en ajoutant des entrées
/etc/fstab
comme ceci:/mnt/hdd/Films /home/mark/Videos/Films none bind 0 0
la source