diff --git a/std/shells/magier/fileview.c b/std/shells/magier/fileview.c
index 00a3b64..85167dd 100644
--- a/std/shells/magier/fileview.c
+++ b/std/shells/magier/fileview.c
@@ -125,36 +125,45 @@
 }
 
 
-private string _ls_output_short(mixed filedata,
-                                int maxlen,int counter,int maxcount)
+private string _ls_output_short(<int|string>* filedata, int maxlen,
+    int counter, int maxcount)
 {
-  string tmp;
-  tmp=filedata[BASENAME];
-  maxlen-=sizeof(tmp);
+  string filename = filedata[BASENAME];
+  maxlen -= sizeof(filename);
   switch(filedata[FILESIZE])
   {
-    case FSIZE_DIR: tmp=sprintf(lstemplates.templates[DIR],tmp);
-             maxlen-=lstemplates.templates[DIR,1]; break;
-    case FSIZE_NOFILE: tmp=sprintf(lstemplates.templates[VC],tmp);
-             maxlen-=lstemplates.templates[VC,1]; break;
-    default: if (find_object(filedata[FULLNAME]))
-             {
-               maxlen-=lstemplates.templates[OBJ,1];
-               tmp=sprintf(lstemplates.templates[OBJ],tmp); break;
-             }
+    case FSIZE_DIR:
+      filename = sprintf(lstemplates.templates[DIR], filename);
+      maxlen -= lstemplates.templates[DIR, 1];
+      break;
+    case FSIZE_NOFILE:
+      filename = sprintf(lstemplates.templates[VC], filename);
+      maxlen -= lstemplates.templates[VC, 1];
+      break;
+    default:
+      if(find_object(filedata[FULLNAME]))
+      {
+        maxlen -= lstemplates.templates[OBJ, 1];
+        filename = sprintf(lstemplates.templates[OBJ], filename);
+        break;
+      }
   }
-  if (!maxcount) return terminal_colour(tmp+"\n",lstemplates.colormap);
-  return terminal_colour(sprintf("%-*s%s",(maxlen+sizeof(tmp)),tmp,
-                 ((counter++)==maxcount?(counter=0,"\n"):"  ")),
-                 lstemplates.colormap);
+  if(!maxcount)
+    return terminal_colour(filename + "\n", lstemplates.colormap);
+  return terminal_colour(
+      sprintf(
+          "%-*s%s",
+          (maxlen + sizeof(filename)),
+          filename,
+          ((counter++) == maxcount ? (counter = 0, "\n") : "  ")),
+      lstemplates.colormap);
 }
 
-private int _ls_maxlen(mixed filedata,int flags,int maxlen)
+private int _ls_maxlen(<int|string>* filedata,int flags, int maxlen)
 {
-  string base;
-  base=filedata[BASENAME];
-  if (!(flags&LS_A)&&(base[0]=='.')) return 0;
-  maxlen=max(maxlen,sizeof(base));
+  string base = filedata[BASENAME];
+  if(!(flags & LS_A) && base[0] == '.') return 0;
+  maxlen = max(maxlen, sizeof(base));
   return 1;
 }
 
@@ -240,92 +249,115 @@
             lstemplates.colormap);
 }
 
+private string* _ls_list(< <int|string>* >* targets, int flags, closure v_read,
+    closure v_write, closure creator)
+{
+  string* entries;
+  if (flags&LS_L)
+  {
+    entries = map(targets, #'_ls_output_long, flags, v_read,
+                  v_write, creator) - ({0});
+  }
+  else
+  {
+    int counter, maxlen;
+    targets = filter(targets, #'_ls_maxlen, flags, &maxlen);
+    if (maxlen > 76) maxlen = 76;
+    // maxcount muss immer um 1 niedriger sein als die tatsaechliche Anzahl an
+    // moeglichen Spalten, weil gegen maxcount++ und nicht gegen ++maxcount
+    // geprueft wird.
+    int maxcount = (78 / (maxlen + 2)) - 1;
+    entries = map(targets, #'_ls_output_short, maxlen, &counter, maxcount);
+  }
+  return entries;
+}
+
 
 static int _ls(string cmdline)
 {
-  int flags,cmp,i,arg_size,size;
-  int maxlen,counter,maxcount;
-  mixed* args;
-  string output;
-  mixed *tmp;
-  closure v_read,v_write,creator,sort_fun;
+  int flags;
   
-  cmdline=_unparsed_args()||"";
-  args=parseargs(cmdline,&flags,LS_OPTS,1);
-  if (flags==-1)
+  string* args = parseargs(_unparsed_args() || "", &flags, LS_OPTS, 1);
+  if(flags == -1)
     return USAGE("ls [-" LS_OPTS "] [<Verzeichnis>] [<Verzeichnis2> ..]");
   SetColorstrings();
-  output="";
-  if (!sizeof(args)) args=({ QueryProp(P_CURRENTDIR) });
-  if (!sizeof(args=file_list(args,MODE_LSA,0,"/")))
-    return notify_fail("ls: Keine passenden Verzeichnisse gefunden.\n"), 0;
-// Files sortieren die erste
-  if (flags&LS_T) cmp=FILEDATE;
-  else if (flags&LS_S) cmp=FILESIZE;
-  else cmp=BASENAME; // =0 :-)
+  if(!sizeof(args))
+    args = ({ QueryProp(P_CURRENTDIR) });
+  < <int|string>* >* targets = file_list(args,MODE_LSA,0,"/");
+  if(!sizeof(targets))
+  {
+    notify_fail("ls: Keine passenden Verzeichnisse gefunden.\n");
+    return 0;
+  }
 
-  if ( !cmp && !(flags&LS_R) || cmp && (flags&LS_R) )
-    sort_fun = function int (mixed* a, mixed* b) {
+  // Files sortieren die erste
+  int cmp;
+  if(flags & LS_T)
+    cmp = FILEDATE;
+  else if(flags & LS_S)
+    cmp = FILESIZE;
+  else
+    cmp = BASENAME;
+
+  closure sort_fun;
+  // Dateinamen aufsteigend sortieren, Groesse und Aenderungsdatum absteigend.
+  if(cmp == BASENAME && !(flags & LS_R) || cmp != BASENAME && (flags & LS_R))
+  {
+    sort_fun = function int (<int|string>* a, <int|string>* b) {
                  return (a[cmp] > b[cmp]);
                };
+  }
   else
-    sort_fun = function int (mixed* a, mixed* b) {
+  {
+    sort_fun = function int (<int|string>* a, <int|string>* b) {
                  return (a[cmp] < b[cmp]);
                };
-  args=sort_array(args,sort_fun);
-// Ausgabeformat bestimmen
+  }
+  targets = sort_array(targets, sort_fun);
+
+  // Ausgabeformat bestimmen
+  closure v_read,v_write,creator;
   if (flags&LS_L)
   {
     v_read=VALID_READ_CL;
     v_write=VALID_WRITE_CL;
     creator=CREATOR_CL;
   }
-  arg_size=sizeof(args);
-  if (arg_size>1||(arg_size&&args[0][FILESIZE]>=0))
+  string output = "";
+  // Falls mehr als ein Ziel angegeben wurde, werden zuerst die Ziele
+  // aufgelistet. Anschließend wird in der Schleife der Inhalt von allen Zielen,
+  // die Verzeichnise sind aufgelistet.
+  // Wurde nur ein Ziel angegeben und dies ist eine Datei, wird diese angezeigt.
+  // In der Schleife wird nichts hinzugefügt, weil hier nur Verzeichnisse
+  // aufgelistet werden.
+  if(sizeof(targets) > 1 || targets[0][FILESIZE] >= 0)
   {
-    if (flags&LS_L)
-      tmp=map(args,#'_ls_output_long,flags,v_read,
-                    v_write,creator)-({0});
+    string* entries = _ls_list(targets, flags, v_read, v_write, creator);
+    output = sprintf(
+        "\n%d Dateien/Unterverzeichnisse:\n%s\n",
+        sizeof(entries),
+        implode(entries, ""));
+  }
+  foreach(<int|string>* target : targets)
+  {
+    if(target[FILESIZE] != FSIZE_DIR)
+      continue;
+
+    < <int|string>* >* sub_targets = file_list(({target[FULLNAME] + "/*"}),
+        MODE_LSB, 0, "/");
+    sub_targets = sort_array(sub_targets, sort_fun);
+    string* entries = _ls_list(sub_targets, flags, v_read, v_write, creator);
+    if(sizeof(entries))
+    {
+      output += sprintf(
+          "\n%s: Verzeichnis, %d Dateien/Unterverzeichnisse:\n%s\n",
+          target[FULLNAME],
+          sizeof(entries),
+          implode(entries, ""));
+    }
     else
     {
-      counter=0;maxlen=0;
-      tmp=filter(args,#'_ls_maxlen,flags,&maxlen);
-      if (maxlen>76) maxlen=76;
-      maxcount=(78/(maxlen+2))-1;
-      tmp=map(tmp,#'_ls_output_short,maxlen,&counter,maxcount);
-    }
-    output=sprintf("\n%d Dateien/Unterverzeichnisse:\n%s\n",
-                   sizeof(tmp),implode(tmp,""));
-  }
-  for(i=0;i<arg_size;i++)
-  {
-    tmp=({});
-    size=args[i][FILESIZE];
-    if (size==FSIZE_DIR)
-    {
-      tmp=file_list(({args[i][FULLNAME]+"/*"}),MODE_LSB,0,"/");
-      tmp=sort_array(tmp,sort_fun);
-      if (flags&LS_L)
-        tmp=map(tmp,#'_ls_output_long,flags,v_read,
-                      v_write,creator)-({0});
-      else
-      {
-        counter=0;maxlen=0;
-        tmp=filter(tmp,#'_ls_maxlen,flags,&maxlen);
-        maxcount=(78/(maxlen+2));
-        if (maxcount) maxcount--;
-        tmp=map(tmp,#'_ls_output_short,maxlen,&counter,maxcount);
-      }
-      if (sizeof(tmp))
-      {
-        output+=sprintf("\n%s: Verzeichnis, %d Dateien/Unterverzeichnisse:\n",
-                      args[i][FULLNAME],sizeof(tmp));
-        output+=(implode(tmp,"")+((string)(tmp[<1][<1..<1])=="\n"?"":"\n"));
-      }
-      else
-      {
-        output+=sprintf("\n%s: Leeres Verzeichnis.\n",args[i][FULLNAME]);
-      }
+      output += sprintf("\n%s: Leeres Verzeichnis.\n", target[FULLNAME]);
     }
   }
   More(output);
