Index: uspace/app/bdsh/cmds/modules/ls/ls.c
===================================================================
--- uspace/app/bdsh/cmds/modules/ls/ls.c	(revision e199ab3efc73f51fb3708eeaa139d6cc533d1abc)
+++ uspace/app/bdsh/cmds/modules/ls/ls.c	(revision a20a451c147b0297544520294ee64349f3b70f64)
@@ -42,4 +42,5 @@
 #include <vfs/vfs.h>
 #include <str.h>
+#include <cap.h>
 
 #include "ls.h"
@@ -58,4 +59,6 @@
 	{ "unsort", no_argument, 0, 'u' },
 	{ "recursive", no_argument, 0, 'r' },
+	{ "well-formatted", no_argument, 0, 'w' },
+	{ "single-column", no_argument, 0, '1' },
 	{ 0, 0, 0, 0 }
 };
@@ -74,4 +77,7 @@
 	ls->sort = 1;
 
+	ls->well_formatted = false;
+	ls->single_column = false;
+
 	return 1;
 }
@@ -90,7 +96,23 @@
 static void ls_print(struct dir_elem_t *de)
 {
-	if (de->s.is_file)
+	if (!ls.single_column && de->s.is_file) {
+		if (ls.well_formatted) {
+			cap_spec_t cap;
+
+			cap_from_blocks(1, de->s.size, &cap);
+			cap_simplify(&cap);
+
+			char *rptr;
+			if (cap_format(&cap, &rptr) == EOK) {
+				printf("%-40s\t%s\n", de->name, rptr);
+				free(rptr);
+				//if there is a failure with cap_format we simply print out an unformatted size
+				return;
+			}
+
+		}
+
 		printf("%-40s\t%llu\n", de->name, (long long) de->s.size);
-	else if (de->s.is_directory)
+	} else if (!ls.single_column && de->s.is_directory)
 		printf("%-40s\t<dir>\n", de->name);
 	else
@@ -364,5 +386,5 @@
 
 	while (c != -1) {
-		c = getopt_long(argc, argv, "hur", long_options, &opt_ind);
+		c = getopt_long(argc, argv, "hurw1", long_options, &opt_ind);
 		switch (c) {
 		case 'h':
@@ -374,4 +396,10 @@
 		case 'r':
 			ls.recursive = 1;
+			break;
+		case 'w':
+			ls.well_formatted = true;
+			break;
+		case '1':
+			ls.single_column = true;
 			break;
 		}
Index: uspace/app/bdsh/cmds/modules/ls/ls.h
===================================================================
--- uspace/app/bdsh/cmds/modules/ls/ls.h	(revision e199ab3efc73f51fb3708eeaa139d6cc533d1abc)
+++ uspace/app/bdsh/cmds/modules/ls/ls.h	(revision a20a451c147b0297544520294ee64349f3b70f64)
@@ -14,4 +14,6 @@
 	unsigned int sort;
 
+	bool single_column;
+	bool well_formatted;
 } ls_job_t;
 
