07-21-2023, 03:01 PM
I'm assuming from your question that you don't want directories names, just files.
### Directory Structure Example
```none
animals
├── all.jpg
├── mammals
│ └── cat.jpg
│ └── dog.jpg
└── insects
└── bee.jpg
```
### `Walk` function
Credits go to [Justin Maier][1] in [this gist][2]
If you want *just an array* of the files paths use `return_object: false`:
```js
const fs = require('fs').promises;
const path = require('path');
async function walk(dir) {
let files = await fs.readdir(dir);
files = await Promise.all(files.map(async file => {
const filePath = path.join(dir, file);
const stats = await fs.stat(filePath);
if (stats.isDirectory()) return walk(filePath);
else if(stats.isFile()) return filePath;
}));
return files.reduce((all, folderContents) => all.concat(folderContents), []);
}
```
### Usage
```js
async function main() {
console.log(await walk('animals'))
}
```
### Output
```js
[
"/animals/all.jpg",
"/animals/mammals/cat.jpg",
"/animals/mammals/dog.jpg",
"/animals/insects/bee.jpg"
];
```
[1]:
### Directory Structure Example
```none
animals
├── all.jpg
├── mammals
│ └── cat.jpg
│ └── dog.jpg
└── insects
└── bee.jpg
```
### `Walk` function
Credits go to [Justin Maier][1] in [this gist][2]
If you want *just an array* of the files paths use `return_object: false`:
```js
const fs = require('fs').promises;
const path = require('path');
async function walk(dir) {
let files = await fs.readdir(dir);
files = await Promise.all(files.map(async file => {
const filePath = path.join(dir, file);
const stats = await fs.stat(filePath);
if (stats.isDirectory()) return walk(filePath);
else if(stats.isFile()) return filePath;
}));
return files.reduce((all, folderContents) => all.concat(folderContents), []);
}
```
### Usage
```js
async function main() {
console.log(await walk('animals'))
}
```
### Output
```js
[
"/animals/all.jpg",
"/animals/mammals/cat.jpg",
"/animals/mammals/dog.jpg",
"/animals/insects/bee.jpg"
];
```
[1]:
[To see links please register here]
[2]:[To see links please register here]