diff --git a/cmd/rmdirs/rmdirs.go b/cmd/rmdirs/rmdirs.go
index 7131e46d0..7551d1fe1 100644
--- a/cmd/rmdirs/rmdirs.go
+++ b/cmd/rmdirs/rmdirs.go
@@ -25,7 +25,7 @@ empty directories in.
 		cmd.CheckArgs(1, 1, command, args)
 		fdst := cmd.NewFsDst(args)
 		cmd.Run(true, false, command, func() error {
-			return fs.Rmdirs(fdst)
+			return fs.Rmdirs(fdst, "")
 		})
 	},
 }
diff --git a/fs/operations.go b/fs/operations.go
index 4b0de106e..1bcee69e9 100644
--- a/fs/operations.go
+++ b/fs/operations.go
@@ -877,8 +877,6 @@ func Rmdir(f Fs, dir string) error {
 }
 
 // Purge removes a container and all of its contents
-//
-// FIXME doesn't delete local directories
 func Purge(f Fs) error {
 	doFallbackPurge := true
 	var err error
@@ -900,7 +898,7 @@ func Purge(f Fs) error {
 		if err != nil {
 			return err
 		}
-		err = Rmdir(f, "")
+		err = Rmdirs(f, "")
 	}
 	if err != nil {
 		Stats.Error()
@@ -1207,8 +1205,8 @@ func Cat(f Fs, w io.Writer) error {
 
 // Rmdirs removes any empty directories (or directories only
 // containing empty directories) under f, including f.
-func Rmdirs(f Fs) error {
-	list := NewLister().Start(f, "")
+func Rmdirs(f Fs, dir string) error {
+	list := NewLister().Start(f, dir)
 	dirEmpty := make(map[string]bool)
 	dirEmpty[""] = true
 	for {
diff --git a/fs/operations_test.go b/fs/operations_test.go
index 808d5f21f..83e34824a 100644
--- a/fs/operations_test.go
+++ b/fs/operations_test.go
@@ -672,7 +672,7 @@ func TestRmdirs(t *testing.T) {
 
 	// Clean any directories that have crept in so far
 	// FIXME make the Finalise method do this?
-	require.NoError(t, fs.Rmdirs(r.fremote))
+	require.NoError(t, fs.Rmdirs(r.fremote, ""))
 
 	// Make some files and dirs we expect to keep
 	r.ForceMkdir(r.fremote)
@@ -708,7 +708,7 @@ func TestRmdirs(t *testing.T) {
 		fs.Config.ModifyWindow,
 	)
 
-	require.NoError(t, fs.Rmdirs(r.fremote))
+	require.NoError(t, fs.Rmdirs(r.fremote, ""))
 
 	fstest.CheckListingWithPrecision(
 		t,