Comment trouver tous les fichiers qui sont fondamentalement des liens souples ou physiques d’autres répertoires ou fichiers sur linux?

StackOverflow https://stackoverflow.com/questions/1810334

Question

Comment puis-je obtenir la liste de tous les fichiers liés sur mon système ou à partir d'un certain répertoire? J'avais l'habitude de créer des liens, mais ils sont devenus ingérables avec le temps. Je veux la liste de tous ces liens à partir d'un répertoire. Quelqu'un peut-il aider?

Était-ce utile?

La solution

Il est facile de trouver des liens symboliques:

% find . -type l

La recherche de liens physiques est délicate, car si un sous-répertoire du répertoire en question possède également des sous-répertoires, ceux-ci augmentent le nombre de liens physiques. C’est ainsi que les sous-répertoires sont liés à leurs parents dans UNIX (c’est l’entrée .. de chaque sous-répertoire).

Si vous souhaitez uniquement rechercher des fichiers liés (et non des répertoires), cela fonctionnera:

% find . -type f \! -links 1

Cela fonctionne car un fichier que a ont des liens physiques aura un nombre de liens > 1, et le fichier non lié a un nombre de liens == 1, par conséquent, cette commande recherche tous les fichiers dont le nombre de liens & Lt; & Gt; 1

Vous pouvez également utiliser les nouvelles versions de find:

% find . -type f -links +1

Cela fonctionne pour la même raison que ci-dessus; Cependant, les versions les plus récentes de find peuvent prendre + n ou -n au lieu d'un nombre. Cela équivaut à tester plus de n ou moins que n, respectivement.

Autres conseils

find / -xdev -samefile filename

@OP, si vous avez trouvé GNU find, vous pouvez trouver des liens physiques en utilisant -printf "%n", par exemple

find /path -type f -printf "%f/%n/%i\n" | while IFS="/" read filename num_hlinks inum
do
 echo "Filename: $filename. Number of hard links: $num_hlinks, inode: $inum"
 # if 2 or more files have the same inode number, then they are hard links. 
 # you can therefore count how many $inum that are the same and determine those hard links, which 
 # you have to try doing yourself.
done

Voir par exemple ici https://www.gnu.org/software/findutils /manual/html_node/find_html/Hard-Links.html ou combinez Alnitak et amber_linux answer dans find -L /where/to/search -samefile /some/link/to/file pour trouver tous les liens durs et souples vers un fichier donné.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top