6

I'm using the find command on a Mac to search for a folder called test1. Now test1 folder could be present in the .Trash folder also. How do I exclude the .Trash folder from getting reported in search results or basically any folder I wish to exclude?

$ find $HOME  -name test1 -type d
/Users/theuser/.Trash/test1
/Users/theuser/test1 
/Users/theuser/Downloads/test1 

I want the result to be just

/Users/theuser/test1
/Users/theuser/Downloads/test1 

I used grep:

find $HOME  -name test1 -type d | grep -v '.Trash' 

to filter out the .Trash result, but I'm interested in knowing if using find alone achieves the same results.

| |
10
find $HOME -path  $HOME/.Trash -prune -o -name test1 -type d -print

By explicitly using -print you avoid the spurious printing of .Trash.

| |
0

Use the -prune primary:

find $HOME -name .Trash -prune -o -name test1 -type d

Edit:

That will include .Trash in the output. To fix that:

find $HOME -name .Trash -prune -o \( -name test -type d -print \)
| |
  • Using -name will also excluded results in directories named .Trash which are not in the root of the user's home directory. – herrtodd May 12 '11 at 23:18
  • True. I went with smokingun's use of grep -v '.Trash' (should be '\.Trash') as an indication that .Trash might appear elsewhere. I think yours is the better answer, though. – garyjohn May 12 '11 at 23:25

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.