Преглед на файлове

HADOOP-431. Change 'dfs -rm' to not operate recursively and add a new command, 'dfs -rmr', that operates recursively. Contributed by Sameer.

git-svn-id: https://svn.apache.org/repos/asf/lucene/hadoop/trunk@448378 13f79535-47bb-0310-9956-ffa450edef68
Doug Cutting преди 19 години
родител
ревизия
61db713043
променени са 2 файла, в които са добавени 22 реда и са изтрити 8 реда
  1. 4 0
      CHANGES.txt
  2. 18 8
      src/java/org/apache/hadoop/dfs/DFSShell.java

+ 4 - 0
CHANGES.txt

@@ -51,6 +51,10 @@ Trunk (unreleased changes)
     modifications are permitted and block replication is inhibited.
     (Konstantin Shvachko via cutting)
 
+14. HADOOP-431.  Change 'dfs -rm' to not operate recursively and add a
+    new command, 'dfs -rmr' which operates recursively.
+    (Sameer Paranjpye via cutting)
+
 
 Release 0.6.2 (unreleased)
 

+ 18 - 8
src/java/org/apache/hadoop/dfs/DFSShell.java

@@ -255,12 +255,19 @@ public class DFSShell extends ToolBase {
     /**
      * Delete an DFS file
      */
-    public void delete(String srcf) throws IOException {
-        if (fs.delete(new Path(srcf))) {
-            System.out.println("Deleted " + srcf);
-        } else {
-            System.out.println("Delete failed");
-        }
+    public void delete(String srcf, boolean recursive) throws IOException {
+      Path srcp = new Path(srcf);
+      if (fs.isDirectory(srcp) && !recursive) {
+        System.out.println("Cannot remove directory \"" + srcf +
+                           "\", use -rmr instead");
+        return;
+      }
+
+      if (fs.delete(srcp)) {
+        System.out.println("Deleted " + srcf);
+      } else {
+        System.out.println("Delete failed");
+      }
     }
 
     /**
@@ -367,7 +374,8 @@ public class DFSShell extends ToolBase {
                 " [-du <path>]"+
                 " [-mv <src> <dst>]"+
                 " [-cp <src> <dst>]"+
-                " [-rm <src>]" +
+                " [-rm <path>]" +
+                " [-rmr <path>]" +
                 " [-put <localsrc> <dst>]"+
                 " [-copyFromLocal <localsrc> <dst>]"+
                 " [-moveFromLocal <localsrc> <dst>]" + 
@@ -419,7 +427,9 @@ public class DFSShell extends ToolBase {
             } else if ("-cp".equals(cmd)) {
                 copy(argv[i++], argv[i++], conf);
             } else if ("-rm".equals(cmd)) {
-                delete(argv[i++]);
+                delete(argv[i++], false);
+            } else if ("-rmr".equals(cmd)) {
+                delete(argv[i++], true);
             } else if ("-du".equals(cmd)) {
                 String arg = i < argv.length ? argv[i++] : "";
                 du(arg);