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?


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)


1
Dies dürfte insbesondere unter macOS der Fall sein. Unter macOS ist / tmp ein Symlink zu / private / tmp oder einem ähnlichen.
Kojiro
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.