9

There is a directory under /tmp with the name test_copy.

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

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

But if I run the following find command it does not return anything.

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

Why can't find find the directory in the last case?

2
  • 3
    What is the result of ls -ld /tmp?
    – xhienne
    Jan 4, 2017 at 22:28
  • 2
    @xhienne: You are right! It was a symlink to another dir. Can you post it as an answer?
    – Jim
    Jan 4, 2017 at 22:32

1 Answer 1

15

If /tmp is a symbolic link, find won't enter the directory and will just stop, finding nothing.

On the other hand, any of the following commands will work:

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

(the ending / dereferences the symlink)

1
  • 1
    This is likely to be the case on macOS in particular. On macOS, /tmp is a symlink to /private/tmp or some such.
    – kojiro
    Jan 5, 2017 at 3:08

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.