12
votes

Quel est le moyen le plus rapide de trouver tout le fichier avec le même inode?

La seule façon dont je sais est: xxx

mais c'est vraiment lent. Je souhaite trouver un outil comme localiser . Les problèmes réels viennent lorsque vous avez beaucoup de fichier, je suppose que l'opération est O (n).


4 Réponses :


-2
votes

Qu'est-ce que je ferais généralement: ls -i pour obtenir l'inode de ce fichier, puis trouver / dir-depe f -inum Montez . (Vous voulez que le -mount pour éviter de rechercher sur différents systèmes de fichiers, qui fait probablement partie de vos problèmes de performance.)

Autre que cela, je pense que c'est à ce sujet.


1 commentaires

Il utilise déjà -xdev , qui est identique à celui -mount . Donc, ce n'est pas mieux.



7
votes

Voici un moyen:

  • Utilisez Rechercher -Printf "% I: \ T% P ou similaire Pour créer une liste de tous les fichiers préfixés par Inode et sortie dans un fichier temporaire
  • extrait le premier champ - l'inode avec ':' a annexé - et trier pour apporter des doublons ensemble, puis limiter les duplicats, en utilisant coupé -f 1 | Trier | UNIQ -D et sortie qu'à un deuxième fichier temporaire
  • Utilisez fgrep -f pour charger le deuxième fichier en tant que liste des chaînes pour rechercher et rechercher le premier fichier temporaire.

    (Lorsque j'ai écrit cela, j'ai interprété la question comme trouvant tous les fichiers qui avaient dupliquer inodes. Bien sûr, on pourrait utiliser la sortie de la première moitié de cela comme une sorte d'index, de l'inode au chemin, d'une manière donnée. localiser les travaux.)

    sur ma propre machine, j'utilise beaucoup ce genre de fichiers et les garder triés. J'ai également une application d'indexateur de texte qui peut ensuite appliquer une recherche binaire pour trouver rapidement toutes les lignes qui ont un préfixe commune. Un tel outil finit par être très utile pour des emplois tels que celui-ci.


0 commentaires

9
votes

Il n'y a pas de mappage de inode pour nommer. Le seul moyen est de parcourir l'ensemble du système de fichiers, qui, comme vous l'avez souligné, c'est O (nombre de fichiers). (En fait, je pense que c'est θ (nombre de fichiers)).


0 commentaires

8
votes

Je sais que c'est une ancienne question, mais de nombreuses versions de trouvent code> ont une option code> inum code> pour correspondre facilement à un numéro d'inode connu. Vous pouvez le faire avec la commande suivante:

find . -inum 1234


3 commentaires

Très bonne réponse. Même mon ancien serveur Gentoo a trouvé l'option -inum .


Pour arrêter le premier match, vous pouvez essayer quelque chose comme trouver. -inum 1234 | tête -n1 .


Cela fait la même chose que -samefile seulement vous devez trouver l'inode vous-même. Cela rend les choses encore plus lentes.