Thread overview | |||||
---|---|---|---|---|---|
|
September 27, 2017 Can I skip sub directories with file.dirEntries() ? | ||||
---|---|---|---|---|
| ||||
Hi, Can I have a `break` option when using `dirEntries()` (similar to `break` in a loop)? I want to study sub-directories but if any sub-directory matches my criteria I don't to look further into their subdirectories ``` <working-dir> A/ -> matches criteria, stop here, go to next directory (B) B/ -> doesn't match criteria, will look at its sub-directories (BX, BY,...) BX BY ``` Thanks a lot |
September 27, 2017 Re: Can I skip sub directories with file.dirEntries() ? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Ky-Anh Huynh | On Wednesday, 27 September 2017 at 09:00:55 UTC, Ky-Anh Huynh wrote: > Hi, > > Can I have a `break` option when using `dirEntries()` (similar to `break` in a loop)? I want to study sub-directories but if any sub-directory matches my criteria I don't to look further into their subdirectories > > ``` > <working-dir> > A/ -> matches criteria, stop here, go to next directory (B) > B/ -> doesn't match criteria, will look at its sub-directories (BX, BY,...) > BX > BY > ``` > > Thanks a lot I'd just use dirEntries with SpanMode.shallow in combination with filter either in a loop or a recursive function like below. void foo(string path = "path") { foreach(e; dirEntries(path,SpanMode.shallow).filter!(myCritreia(paramters))) { if (e. isDir) foo(e.name); // recurse // do other stuff } } you will loop over all subdirs of "path" that satisfy `myCritreia`. |
September 27, 2017 Re: Can I skip sub directories with file.dirEntries() ? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Nicholas Wilson | On Wednesday, 27 September 2017 at 10:05:34 UTC, Nicholas Wilson wrote:
>
> I'd just use dirEntries with SpanMode.shallow in combination with filter either in a loop or a recursive function like below.
>
> void foo(string path = "path")
> {
> foreach(e; dirEntries(path,SpanMode.shallow).filter!(myCritreia(paramters)))
> {
> if (e. isDir)
> foo(e.name); // recurse
> // do other stuff
> }
> }
>
> you will loop over all subdirs of "path" that satisfy `myCritreia`.
Thank you Nicolas. It's a good idea.
PS: With Linux find command, the thing can be done easily with `-prune` option:
```
find . -iname node_modules -prune
```
Without `-prune` option, there are a lot of unnecessary sub directories...
|
Copyright © 1999-2021 by the D Language Foundation