# getEntries() rabbit hole

**URL:** <https://forums.creativeclouddeveloper.com/t/getentries-rabbit-hole/2243>\
**Category:** Adobe XD\
**Created:** [November 20, 2020, 2:19am UTC](https://forums.creativeclouddeveloper.com/t/getentries-rabbit-hole/2243 "2020-11-20T02:19:50Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![dcotto](https://avatars.discourse-cdn.com/v4/letter/d/dec6dc/32.png) [@dcotto](https://forums.creativeclouddeveloper.com/u/dcotto)\
**Post date:** [November 20, 2020, 2:19am UTC](https://forums.creativeclouddeveloper.com/t/getentries-rabbit-hole/2243/1 "2020-11-20T02:19:50Z")

</div>

Hi i been going crazy for the last 3 days trying to find out how to folder.getEntries() in deeply nested subfolders.

lets take for example:

 ![getEntries](https://us1.discourse-cdn.com/flex015/uploads/xdplugins/original/2X/b/bcbc58e7c7022675809af81861a53cac3704fac4.png)

i select my root foder using fs.getFolder() using the GUI selector…  
then inside my selected root folder, i have DISPLAY folder, version\_X\_XXXX folders (where x can be anything), then in each JPGs folder and finally jpg files.

i can go as far lisitng JPGs Folder but i cant get the entries for the JPGs folder… (i.e. i cannot retrieve the jpg files in jpgs folder) i get nothing… is there a limit in how deep i can go?

> ```javascript
> async function GetJpgEntries() {
> console.log("should work");
> let displayFolders = (await reviewFolder.getEntries()).find(entry => entry.name.includes('DISPLAY'));
> let displayContents = (await displayFolders.getEntries());
> displayContents = (await displayContents.filter(entry => entry.isFolder));
> let versionFolders = (await displayContents.map(entry => entry.getEntries()));
> 
> for await (let versionFolder of versionFolders) {
> versionFolder = (await versionFolder.filter(entry => entry.name.includes('JPGs')));
> console.log(versionFolder.toString());
> }
> }
> 
> ```

i can see my paths but im stuck on further descending down on getting entries for JPGs folder

---

<div class="post-metadata">

**Author:** ![kerrishotts](https://sea1.discourse-cdn.com/flex015/user_avatar/forums.creativeclouddeveloper.com/kerrishotts/32/8_2.png) [@kerrishotts](https://forums.creativeclouddeveloper.com/u/kerrishotts)\
**Post date:** [November 20, 2020, 3:26am UTC](https://forums.creativeclouddeveloper.com/t/getentries-rabbit-hole/2243/2 "2020-11-20T03:26:52Z")

</div>

Off the top of my head, but I think this should work.

```auto
const fs = require("uxp").storage.localFileSystem;

async function getAllJpegEntries(rootFolder) {
    const allTheJpegs = []; // collector array

    // `getEntry` can get a specific path without having to use .filter()
    const theDisplayFolder = await rootFolder.getEntry("DISPLAY");

    // here, get all the folders that start with version_
    const theVersionFolders = (await theDisplayFolder.getEntries())
        .filter(entry => entry.isFolder && entry.name.startsWith("version_"));

    
    // next, loop over al the version folders in sequence
    for await (const aVersionFolder of theVersionFolders) {
        // get the JPGs folder within
        const jpegsFolder = await aVersionFolder.getEntry("JPGs");

        // and get all the entries within that are files ending with .jpg.
        const allTheJpegsInFolder = (await jpegsFolder.getEntries())
            .filter(entry => entry.isFile && entry.name.endsWith(".jpg"));

        // add them to our collector array
        allTheJpegs.push(...allTheJpegsInFolder);        
    }
    return allTheJpegs;
}

```

---

<div class="post-metadata">

**Author:** ![dcotto](https://avatars.discourse-cdn.com/v4/letter/d/dec6dc/32.png) [@dcotto](https://forums.creativeclouddeveloper.com/u/dcotto)\
**Post date:** [December 3, 2020, 9:12pm UTC](https://forums.creativeclouddeveloper.com/t/getentries-rabbit-hole/2243/3 "2020-12-03T21:12:40Z")

</div>

thank you so much that worked great
