* Adam Wellings on Tuesday, July 21, 2009 at 11:17:09 +0100 > I have a folder hierarchy of maildirs, though only the nodes (or leaves) are > actually maildirs, eg: > > fol2 >| -Fol2 >|| -maildira >|| -maildirb >| -Fol3 >|| -Fol4 >||| -maildirc >||| -maildird >|| -maildire >| -Fol5 >|| -etc.. > > This mailboxes command works for me: > > mailboxes `find /path/to/mail -type d -name cur printf '%h '`
Sure, but (my find doesn't have printf): ~$ time find ~/Mail -type d -name cur -execdir pwd \; > /dev/null real 0m54.973s user 0m0.447s sys 0m54.159s ~$ time find ~/Mail -type -d \( \( -name cur -o -name new -o -name tmp \) -prune -o -print \) > /dev/null find: -type: -d: unknown type real 0m0.401s user 0m0.001s sys 0m0.011s > It produces a set of absolute paths, rather than a relative ones (%h is the > path for the parent). No problem if you have $folder set. > It also relies on no, non-maildir folder having a > sub-directory of "cur", but that's a minor point. I think I have a > different/better method on my home machine, but as I'm at work (this is a > Cygwin installation), I can't look that up at the moment. Personally I also want to *exclude* certain nodes/leaves and mailboxes, which is why I always end up with simple printf: mailboxes "!" mailboxes `printf ' %s' ~/Mail/[a-z-]* ~/Mail/[^ANa-z-]*/[^_]*` That's because my setup doesn't change (I know I don't have hierarchies deeper than 2) and I've imposed some conventions, like starting the nodes' names with a capital letter. The corresponding, slightly more flexible find command (for my setup): mailboxes `find -E ~/Mail -type d \( \( -name cur -o -name new -o -name tmp \) \ -prune -o ! -regex '.*/([A-Z_][a-z]*|(Archive|News)/.*)' -print \) \ | tr '\n' ' '` c -- Was heißt hier Dogma, ich bin Underdogma! [ What the hell do you mean dogma, I am underdogma. ] _F R E E_ _V I D E O S_ http://www.blacktrash.org/underdogma/ http://www.blacktrash.org/underdogma/index-en.html