Pourquoi la commande find ne trouve-t-elle pas le répertoire lorsqu'elle est exécutée à partir de ~?

9

Il y a un répertoire sous /tmpavec le nom test_copy.

$ ls /tmp/test_copy/
a.sh b.sh  

$ cd /tmp  
/tmp$ find . -name test_copy  
./test_copy

Mais si j'exécute la findcommande suivante, elle ne renvoie rien.

~/scripts$ find /tmp -name test_copy  
~/scripts$  

Pourquoi ne pas findtrouver le répertoire dans le dernier cas?

Jim
la source
3
Quel est le résultat de ls -ld /tmp?
xhienne
2
@xhienne: Tu as raison! C'était un lien symbolique vers un autre répertoire. Pouvez-vous l'afficher comme réponse?
Jim

Réponses:

15

Si /tmpest un lien symbolique, findn'entrera pas dans le répertoire et s'arrêtera, ne trouvant rien.

D'un autre côté, l'une des commandes suivantes fonctionnera:

find -H /tmp -name test_copy
find /tmp/ -name test_copy

(la fin /déréférence le lien symbolique)

xhienne
la source
1
Ce sera probablement le cas sur macOS en particulier. Sur macOS, / tmp est un lien symbolique vers / private / tmp ou certains autres.
kojiro