Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 17 May 2004 12:37:02 +0200
From:      Oliver Eikemeier <eikemeier@fillmore-labs.com>
To:        FreeBSD current <current@FreeBSD.org>
Cc:        Ruslan Ermilov <ru@FreeBSD.org>
Subject:   RFC: new primary -depth n/-level n for find(1)
Message-ID:  <40A895CE.9050505@fillmore-labs.com>

next in thread | raw e-mail | index | archive | help
find(1) should have a primary that is true iff the current file
is n levels deep in the tree.

This patch implements `-depth n' and an alias `-level n' which
support the usual +/- modifiers, with `-depth +-1' essentially
being a noop.

The reason for implementing both was a discussion with ruslan,
where he preferred `-depth [[+|-]level]', while I did not like
the dual syntax that depth would have, because of its definition
in IEEE 1003.1.

Basically this allow one to do

  find /usr/ports -maxdepth 2 -name Tools -prune -o -level 2 -type d -print
or
  find /usr/ports -maxdepth 2 -name Tools -prune -o -depth 2 -type d -print

which currently can only be done with something like

  find /usr/ports -mindepth 2 -maxdepth 2 -regex '.*/Tools/[^/]*' -prune -o -type d -print

which lists all port directories without Tools (this example
lists some additional files, like packages, distfiles and CVS).

I'm happy with the dual syntax, and probably I should change the manpage
to state that `-depth' is equivalent to `-d' and `-depth n' equivalent
to `-level n' if we go with this solution, but I'm also comfortable
with having only one of `-level n' or `-depth n', I just wanted to have
the functionality available. Any opinions?


While I'm here, fix -maxdepth when depth-first traversal is done,
try:
  find -d /usr -maxdepth 2

Which also doesn't give you warnings if any files on level three
you don't really care for are unreadable.


The patches for -CURRENT and -STABLE are at:
  http://people.freebsd.org/~eik/patches/find-depth.5.patch
  MD5 (find-depth.5.patch) = 5e52ac3c090726c609a9b582f6fbc993

  http://people.freebsd.org/~eik/patches/find-depth.4.patch
  MD5 (find-depth.4.patch) = 6b67d3ac20c8fb5857d2d54f0365b518


-Oliver



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?40A895CE.9050505>