# Content ### If you are wondering where your Canvas Files are, this dataviewJS will show you. (Requires that you have the Dataview plug-in installed) [Dataview Website](https://obsidian.rocks/dataview-in-obsidian-a-beginners-guide/) ```dataviewjs // Specify the folder path let folderPath = ""; // Function to recursively find .canvas files in the folder and subfolders async function findCanvasFiles(folder) { let canvasFiles = []; let files = await app.vault.adapter.list(folder); for (let file of files.files) { if (file.endsWith(".canvas")) { canvasFiles.push(file); } } for (let subfolder of files.folders) { canvasFiles.push(...await findCanvasFiles(subfolder)); } return canvasFiles; } // Call the function to find .canvas files and then display them in a table findCanvasFiles(folderPath).then(canvasFiles => { if (canvasFiles.length > 0) { dv.table(["Canvas Files"], canvasFiles.map(f => [f])); } else { dv.paragraph("No canvas files found in the specified folder."); } }); ``` ### This version has clickable links! ```dataviewjs // Specify the folder path let folderPath = ""; // Function to recursively find .canvas files in the folder and subfolders async function findCanvasFiles(folder) { let canvasFiles = []; let files = await app.vault.adapter.list(folder); for (let file of files.files) { if (file.endsWith(".canvas")) { canvasFiles.push(file); } } for (let subfolder of files.folders) { canvasFiles.push(...await findCanvasFiles(subfolder)); } return canvasFiles; } // Call the function to find .canvas files and then display them as links findCanvasFiles(folderPath).then(canvasFiles => { if (canvasFiles.length > 0) { dv.table(["Canvas Files"], canvasFiles.map(f => [dv.fileLink(f)]) ); } else { dv.paragraph("No canvas files found in the specified folder."); } }); ```