bug-findutils
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Technical reason to use `-path "./foo" -prune` vs `-name "foo" -prun


From: Peggy Russell
Subject: Re: Technical reason to use `-path "./foo" -prune` vs `-name "foo" -prune`
Date: Tue, 5 Apr 2011 00:23:19 +0000 (UTC)
User-agent: Loom/3.14 (http://gmane.org/)

> > On a side note: I understand `-name` is the basename and `-path` is
> > the dirname. Everything is a file. A directory can be matched
> > with `-name` or `-path`, a file can only be matched with `-name` and
> > `-path` if no slashes used. I almost always see `-name foo -prune`
> > verses `-path ./foo -prune`. And was wondering if there was a
> > technical reason? Is one more efficient than the other?
> 
> They have different meanings.    One will prune start/subdir/foo and
> the other will not.
> 

In the examples below (one uses `-iname` (basename) and one uses
`-path` (dirname relative to starting point)) pruned the directory '/foo'.
I added `-D search` (that helps sometimes) and the output was the same for both.
 I know the man page mentions `-prune` under both `-name` and `-path`. `-path`
also has a reference to POSIX. I doubled checked the POSIX `find` and `-path`
was listed.

http://pubs.opengroup.org/onlinepubs/9699919799/utilities/find.html

It seems `-path` and `-name` are interchangeable as far as `-prune` goes, as
long as the pattern is correct for each of them. 


find . -path "./foo" -prune -o -print
-------------------------------------
.                                         
./bar                                     
./cc                                      
./abc3.txt                                
./abc2.txt                                
./abc1.txt

find . -name "foo" -prune -o -print
-----------------------------------
.
./bar
./cc
./abc3.txt
./abc2.txt
./abc1.txt


Data:
find . -name "*" -printf '[%y] %-20p +%d \n'
--------------------------------------------
[d] .                    +0
[d] ./bar                +1
[f] ./cc                 +1
[f] ./abc3.txt           +1
[d] ./foo                +1
[f] ./foo/abc3.txt       +2
[d] ./foo/baz            +2
[f] ./foo/abc2.txt       +2
[f] ./foo/abc1.txt       +2
[f] ./abc2.txt           +1
[f] ./abc1.txt           +1

Thank you.
Peggy Russell




reply via email to

[Prev in Thread] Current Thread [Next in Thread]