diff --git a/fsl/utils/filetree/__init__.py b/fsl/utils/filetree/__init__.py
index 9d31383db6c525d926f9eeb5e558f530700a376c..8e0b7add9933f787a8d737928fc54b73a25dbb04 100644
--- a/fsl/utils/filetree/__init__.py
+++ b/fsl/utils/filetree/__init__.py
@@ -277,4 +277,4 @@ of the short variable names defined in the
 __author__ = 'Michiel Cottaar <Michiel.Cottaar@ndcn.ox.ac.uk>'
 
 from .filetree import FileTree, register_tree, MissingVariable
-from .parse import tree_directories
+from .parse import tree_directories, list_all_trees
diff --git a/fsl/utils/filetree/parse.py b/fsl/utils/filetree/parse.py
index c89b381fd38142158f78319c7b070a331bb875a5..11a8f1f221713b775caf35dfbfae7ba2f65102bb 100644
--- a/fsl/utils/filetree/parse.py
+++ b/fsl/utils/filetree/parse.py
@@ -1,7 +1,8 @@
+import glob
 import os.path as op
 from . import filetree
 from pathlib import PurePath
-from typing import Tuple
+from typing import Tuple, List
 import re
 
 
@@ -26,6 +27,17 @@ def search_tree(name: str) -> str:
     raise ValueError("No file tree found for %s" % name)
 
 
+def list_all_trees() -> List[str]:
+    """Return a list containing paths to all tree files that can be found in
+    :data:`tree_directories`
+    """
+    trees = []
+    for directory in tree_directories:
+        directory = op.abspath(directory)
+        trees.extend(glob.glob(op.join(directory, '*.tree')))
+    return trees
+
+
 def read_line(line: str) -> Tuple[int, PurePath, str]:
     """
     Parses line from the tree file