[SLL] find insanity
Russell Evans
russell-evans at qwest.net
Fri May 27 12:55:48 PDT 2005
On Thu, 26 May 2005 19:04:12 -0700 (PDT)
"Andrew Sweger" <andrew at sweger.net> wrote:
> Here's the solution using
> Perl's File::Find (only the wanted() code is shown),
>
> sub wanted {
> my ($dev,$ino,$mode,$nlink,$uid,$gid);
>
> (($dev,$ino,$mode,$nlink,$uid,$gid) = lstat($_)) &&
> -d _ &&
> -d "$File::Find::name/.svn" &&
> print("$File::Find::name\n") &&
> ($File::Find::prune = 1);
> }
>
> In other words, find me directories that contain a sub-directory named
> ".svn", print the directory name, and prune further exploration in
> this sub-tree. I don't think find would do this (short of forking a
> helper on each directory found).
Using an example directory structure posted to the list by
Paul <paul at oz.net>
revans at linux:~> find ~/projects
/home/revans/projects
/home/revans/projects/CVS
/home/revans/projects/CVS/1
/home/revans/projects/bar
/home/revans/projects/bar/baz
/home/revans/projects/bar/baz/.svn
/home/revans/projects/bar/baz/.svn/3
/home/revans/projects/foo
/home/revans/projects/.svn
/home/revans/projects/.svn/2
/home/revans/projects/.svn/.svn
revans at linux:~> find ~/projects -type d -name .svn
/home/revans/projects/bar/baz/.svn
/home/revans/projects/.svn
/home/revans/projects/.svn/.svn
revans at linux:~> find ~/projects -type d -name .svn -prune
/home/revans/projects/bar/baz/.svn
/home/revans/projects/.svn
If by "find me directories that contain a sub-directory named
".svn", print the directory name" you what "/home/revans/projects"
when /home/revans/projects/.svn is found then
for i in `find ~/projects -type d -name .svn -prune` ; do
echo ${i%/*}
done
revans at linux:~> for i in `find ~/projects -type d -name .svn -prune` ;
do echo ${i%/*} ; done
/home/revans/projects/bar/baz
/home/revans/projects
Is this what you where looking for?
Thank you
Russell
More information about the linux-list
mailing list