1

I am using find in a Bash script. How can I modify that code to include a specific directory under 'bin' , ie './bin/php/' (while still ignoring all other sub-directories of 'bin')?

Current code:

find . -name '*.php' \
-and ! -path './bin/*' \
asked Dec 9, 2009 at 9:14

4 Answers 4

1

Is that what you mean?

find . \( \! -iregex ^./bin/.\* -o -iregex ^./include/something/.\* \) \
 -name \*.php
answered Dec 9, 2009 at 9:15
2
  • No - but I've rewrote the question so hopefully I'm explaining myself better now. Commented Dec 9, 2009 at 9:20
  • yoavf, so I've edited my reply Commented Dec 9, 2009 at 9:47
3
find /bin /bin/php -maxdepth 1 -name "*.php"

Proof of concept

$ tree /bin
/bin
|-- ash
|-- dont_search
| |-- hide_me.php
| `-- hide_me.txt
|-- du
|-- file.php
|-- fmt
|-- php
| |-- hide_me.txt
| `-- show_me.php
`-- zsh
2 directories, 184 files

Result

$ find /bin /bin/php -maxdepth 1 -name "*.php"
/bin/file.php
/bin/php/show_me.php

Notice that /bin/dont_search/hide_me.php did not match

answered Dec 9, 2009 at 10:50
2

Try this:

find . ./bin/php -path ./bin -prune -o -print

This will ignore files that are within ./bin, too, though.

By the way, it's "find" rather than "Bash find".

answered Dec 9, 2009 at 12:13
1

GNU find

find . -name "*.txt" ! -iregex ".*/bin/.*"
answered Dec 9, 2009 at 9:30

You must log in to answer this question.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.