Comment trouver et répertorier tous les liens symboliques créés pour un fichier particulier?

51

J'avais créé de nombreux liens symboliques sur différents chemins pour un fichier ou un répertoire particulier. Je veux toute la liste des chemins de liens symboliques créés (emplacement).

Exemple:

J'ai créé des liens symboliques pour le répertoire ~/Pictures sur de nombreux répertoires. Comment puis-je répertorier tous les liens symboliques vers ce répertoire ~/Pictures ?

Est-ce possible? Si oui, alors comment?

    
posée Avinash Raj 04.03.2014 - 10:06
la source

4 réponses

38

Voici un exemple:

find -L /dir/to/start -xtype l -samefile ~/Pictures

ou, peut-être mieux:

find -L /dir/to/start -xtype l -samefile ~/Pictures 2>/dev/null

pour se débarrasser de certaines erreurs comme Permission denied , Too many levels of symbolic links ou File system loop detected dont find les jette quand il ne dispose pas des autorisations appropriées ou d'autres situations.

  • -L - Suivez les liens symboliques.

  • -xtype l - Le fichier est un lien symbolique

  • -samefile name - Le fichier fait référence au même inode que name . Lorsque -L est actif, cela peut inclure des liens symboliques.

Remarques:

  • Utilisez L minuscule dans -xtype l , pas le chiffre 1.
  • Sous macOS / Darwin, -xtype est -type .
réponse donnée Radu Rădeanu 04.03.2014 - 10:13
la source
6

Très simple, utilisez l’option -lname :

find / -lname /path/to/original/dir

De man find :

-lname pattern
       File is a symbolic link whose contents match shell pattern pattern.  The
       metacharacters do not treat '/' or '.' specially.  If the -L option or the
       -follow option is in effect, this test returns false unless the symbolic link
       is broken.

Remarque : n'oubliez pas que les liens symboliques peuvent être n'importe où, y compris un système distant (si vous partagez des fichiers). Vous ne pourrez donc peut-être pas tous les localiser.

    
réponse donnée Abdennour TOUMI 25.06.2014 - 16:23
la source
2

Essayez ceci:

ls -i ~/

277566 Pictures

find . -follow -inum 277566 (recherche des répertoires avec le même numéro inode )

Il affichera tous ses chemins de liens symboliques.

    
réponse donnée nux 04.03.2014 - 10:21
la source
0

J'aime ce one-liner le plus:

find . -maxdepth 1 -type l -exec readlink -f '{}' \;

réfs:

lien

lien

    
réponse donnée user216125 13.04.2017 - 00:25
la source

Lire d'autres questions sur les étiquettes