Почему команда find не находит каталог при запуске из ~?


9

Есть каталог /tmpс именем test_copy.

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

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

Но если я запускаю следующую findкоманду, она ничего не возвращает.

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

Почему не findудается найти каталог в последнем случае?


3
Каков результат ls -ld /tmp?
xhienne

2
@xhienne: Вы правы! Это была символическая ссылка на другой каталог. Вы можете опубликовать это как ответ?
Джим

Ответы:


15

Если /tmpэто символическая ссылка, findне войдет в каталог и просто остановится, ничего не найдя.

С другой стороны, любая из следующих команд будет работать:

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

(окончание /разыменовывает символическую ссылку)


1
Скорее всего, это относится к macOS в частности. В macOS / tmp - это символическая ссылка на / private / tmp или что-то подобное.
Кодзиро
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.