Warum findet der Befehl find das Verzeichnis nicht, wenn er von ~ ausgeführt wird?

9

Unter befindet sich ein Verzeichnis /tmpmit dem Namen test_copy.

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

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

Wenn ich jedoch den folgenden findBefehl ausführe, wird nichts zurückgegeben.

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

Warum kann finddas Verzeichnis im letzten Fall nicht gefunden werden?

Jim
quelle
3
Was ist das Ergebnis von ls -ld /tmp?
Xhienne
2
@xhienne: Du hast recht! Es war ein Symlink zu einem anderen Verzeichnis. Kannst du es als Antwort posten?
Jim

Antworten:

15

Wenn /tmpes sich um einen symbolischen Link handelt, findwird das Verzeichnis nicht betreten und es wird einfach angehalten und es wird nichts gefunden.

Auf der anderen Seite funktioniert einer der folgenden Befehle:

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

(das Ende /dereferenziert den Symlink)

xhienne
quelle
1
Dies dürfte insbesondere unter macOS der Fall sein. Unter macOS ist / tmp ein Symlink zu / private / tmp oder einem ähnlichen.
Kojiro