aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Lu <chrislusf@users.noreply.github.com>2021-07-21 00:35:54 -0700
committerGitHub <noreply@github.com>2021-07-21 00:35:54 -0700
commit3138805b3319e02522a9394b47635b7dc0f6413a (patch)
tree679ced191978d6da5f3844cc0e30507aeda1aeac
parenta125c8fbe272818400889bcd8d45819d4570a694 (diff)
parentb23b307e088efd41d4018fa7295f702bcda0f026 (diff)
downloadseaweedfs-3138805b3319e02522a9394b47635b7dc0f6413a.tar.xz
seaweedfs-3138805b3319e02522a9394b47635b7dc0f6413a.zip
Merge pull request #2200 from combineads/add_fs_rm
weed shell: fs.rm remove file or directory
-rw-r--r--weed/shell/command_fs_rm.go67
1 files changed, 67 insertions, 0 deletions
diff --git a/weed/shell/command_fs_rm.go b/weed/shell/command_fs_rm.go
new file mode 100644
index 000000000..4ee96ecf0
--- /dev/null
+++ b/weed/shell/command_fs_rm.go
@@ -0,0 +1,67 @@
+package shell
+
+import (
+ "context"
+ "fmt"
+ "io"
+
+ "github.com/chrislusf/seaweedfs/weed/pb/filer_pb"
+ "github.com/chrislusf/seaweedfs/weed/util"
+)
+
+func init() {
+ Commands = append(Commands, &commandFsRm{})
+}
+
+type commandFsRm struct {
+}
+
+func (c *commandFsRm) Name() string {
+ return "fs.rm"
+}
+
+func (c *commandFsRm) Help() string {
+ return `remove a file or a folder, recursively delete all files and folders
+
+ fs.rm <entry1>
+
+ fs.rm /dir/file_name
+ fs.rm /dir
+`
+}
+
+func (c *commandFsRm) Do(args []string, commandEnv *CommandEnv, writer io.Writer) (err error) {
+
+ if len(args) != 1 {
+ return fmt.Errorf("need to have arguments")
+ }
+
+ targetPath, err := commandEnv.parseUrl(args[0])
+ if err != nil {
+ return err
+ }
+
+ targetDir, targetName := util.FullPath(targetPath).DirAndName()
+
+ return commandEnv.WithFilerClient(func(client filer_pb.SeaweedFilerClient) error {
+
+ request := &filer_pb.DeleteEntryRequest{
+ Directory: targetDir,
+ Name: targetName,
+ IgnoreRecursiveError: true,
+ IsDeleteData: true,
+ IsRecursive: true,
+ IsFromOtherCluster: false,
+ Signatures: nil,
+ }
+ _, err = client.DeleteEntry(context.Background(), request)
+
+ if err == nil {
+ fmt.Fprintf(writer, "remove: %s\n", targetPath)
+ }
+
+ return err
+
+ })
+
+}