I am on Linux (Ubuntu) and I am would like to exclude certain directories (like .hg) when I am doing a
find | less
I tried the following to exclude the .hg directory from listing, but does not seem to work.
find -type d ( ! -iname .hg ) find -type d ( ! -name .hg ) find -type d ( ! -iname .hg )
How do I exclude .directory in a find command
Answers:
Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.
Method 1
On the research for a similar find solution I discovered the helpful explanation on How to use ‘-prune’ option of ‘find’ in sh? by Laurence Gonsalves.
You could use something like:
find . ( -type d -name .hg -prune ) -o ( -type f -name "foo" -print )
or (without the name)
find . ( -type d -name .hg -prune ) -o ( -type f -print )
The (escaped) parentheses ( and ) group the tests (type and name) and corresponding actions (prune and print, respectively) together left and right of the OR (-o).
Since -o has lower precedence than juxtaposition, you can omit the parentheses if you like. Many find implementations also let you skip the final -print.
find . -type d -name .hg -prune -o -type f -name "foo" -print
Method 2
Have a look at ack: http://betterthangrep.com/
In addition to having a reasonable set of default excluded folders (.hg is a default exclude for instance), it is easy to exclude new folders:
ack --ignore-dir=.directory search_term
To bring this back to your use case where you are looking for a list of files, you would use the -f option, as in:
ack -f --ignore-dir=.directory
I switched from writing convoluted search/find commands to simple ack ones.
Tip: Put commonly used command line options (excluded folders for instance) into a .ackrc file.
Method 3
you can try
find ( ! -regex '.*/.directory(|/.*)' )
All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0