Por que o comando find não encontra o diretório quando executado a partir de ~?

9

Há um no diretório /tmpcom o nome test_copy.

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

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

Mas se eu executar o seguinte findcomando, ele não retornará nada.

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

Por que não consegue findencontrar o diretório no último caso?

Jim
fonte
3
Qual é o resultado de ls -ld /tmp?
xhienne
2
@xhienne: Você está certo! Era um link simbólico para outro diretório. Você pode publicá-lo como resposta?
Jim

Respostas:

15

Se /tmpfor um link simbólico, findnão entrará no diretório e apenas parará, sem encontrar nada.

Por outro lado, qualquer um dos seguintes comandos funcionará:

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

(o final /desreferencia o link simbólico)

xhienne
fonte
1
É provável que este seja o caso do macOS em particular. No macOS, / tmp é um link simbólico para / private / tmp ou algo parecido.
kojiro