J'avais créé de nombreux liens symboliques sur différents chemins pour un fichier ou un répertoire particulier. Je veux la liste complète des chemins de liens symboliques créés (emplacement).
J'ai créé des liens symboliques pour le répertoire ~/Pictures
sur de nombreux répertoires. Comment lister tous les liens symboliques vers ce répertoire ~/Pictures
?
Est-ce possible? Si oui, alors comment?
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 telles que Permission denied
, Too many levels of symbolic links
ou File system loop detected
qui find
les lève lorsqu'elles ne disposent pas des autorisations appropriées ou d'autres situations.
-L
- Suivez les liens symboliques.
-xtype l
- Le fichier est un lien symbolique
-samefile name
- File fait référence au même inode que name
. Lorsque -L
est en vigueur, cela peut inclure des liens symboliques.
Notes:
-xtype l
, pas le chiffre 1.-xtype
est -type
.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 se trouver n'importe où, ce qui inclut un système distant (si vous partagez des fichiers), de sorte que vous ne pourrez peut-être pas tous les localiser.
Essaye ça :
ls -i ~/
277566 Pictures
find . -follow -inum 277566
(recherche de répertoires avec le même numéro inode)
Il affichera tous les chemins de ses liens symboliques.
J'aime ce one-liner le plus:
find . -maxdepth 1 -type l -exec readlink -f '{}' \;
réfs:
https://unix.stackexchange.com/questions/21984/list-symlinks-in-current-directory