diff --git a/applications/utilities/postProcessing/miscellaneous/foamListTimes/foamListTimes.C b/applications/utilities/postProcessing/miscellaneous/foamListTimes/foamListTimes.C
index 1cd84f1851ca69b678d27e40442fbae5f6d92ad6..8659f0205fd71743bf0d3b5a9d7ac5f70bb6827a 100644
--- a/applications/utilities/postProcessing/miscellaneous/foamListTimes/foamListTimes.C
+++ b/applications/utilities/postProcessing/miscellaneous/foamListTimes/foamListTimes.C
@@ -31,6 +31,8 @@ Usage
 
     - foamListTimes [OPTION]
 
+    \param -rm \n
+    Remove selected time directories
     \param -processor \n
     List times from processor0/ directory
 
@@ -56,6 +58,11 @@ int main(int argc, char *argv[])
         "processor",
         "list times from processor0/ directory"
     );
+    argList::addBoolOption
+    (
+        "rm",
+        "remove selected time directories"
+    );
     #include "setRootCase.H"
 
     label nProcs = 0;
@@ -117,9 +124,37 @@ int main(int argc, char *argv[])
         args
     );
 
-    forAll(timeDirs, timeI)
+    if (args.optionFound("rm"))
     {
-        Info<< timeDirs[timeI].name() << endl;
+        if (args.optionFound("processor"))
+        {
+            for (label procI=0; procI<nProcs; procI++)
+            {
+                fileName procPath
+                (
+                    args.path()/(word("processor") + name(procI))
+                );
+
+                forAll(timeDirs, timeI)
+                {
+                    rmDir(procPath/timeDirs[timeI].name());
+                }
+            }
+        }
+        else
+        {
+            forAll(timeDirs, timeI)
+            {
+                rmDir(args.path()/timeDirs[timeI].name());
+            }
+        }
+    }
+    else
+    {
+        forAll(timeDirs, timeI)
+        {
+            Info<< timeDirs[timeI].name() << endl;
+        }
     }
 
     return 0;