Skip to content

Commit 16bec96

Browse files
committed
Fixes #956 - fix size and alignement of du and ls output reporting
This change take into account that now, having big datasets with big file sizes is more common. Important note for automatic scripts: Output changes for du, la and ls commands:display column sizes and alignements changed.
1 parent 7a9aa85 commit 16bec96

File tree

1 file changed

+25
-13
lines changed

1 file changed

+25
-13
lines changed

s3cmd

Lines changed: 25 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -102,8 +102,8 @@ def subcmd_bucket_usage_all(s3):
102102
buckets_size += size
103103
total_size, size_coeff = formatSize(buckets_size, cfg.human_readable_sizes)
104104
total_size_str = str(total_size) + size_coeff
105-
output(u"".rjust(8, "-"))
106-
output(u"%s Total" % (total_size_str.ljust(8)))
105+
output(u"".rjust(12, "-"))
106+
output(u"%s Total" % (total_size_str.ljust(12)))
107107
return size
108108

109109
def subcmd_bucket_usage(s3, uri):
@@ -131,9 +131,14 @@ def subcmd_bucket_usage(s3, uri):
131131
except KeyboardInterrupt as e:
132132
extra_info = u' [interrupted]'
133133

134-
total_size, size_coeff = formatSize(bucket_size, Config().human_readable_sizes)
135-
total_size_str = str(total_size) + size_coeff
136-
output(u"%s %s objects %s%s" % (total_size_str.ljust(8), object_count, uri, extra_info))
134+
total_size_str = u"%d%s" % formatSize(bucket_size,
135+
Config().human_readable_sizes)
136+
if Config().human_readable_sizes:
137+
total_size_str = total_size_str.rjust(5)
138+
else:
139+
total_size_str = total_size_str.rjust(12)
140+
output(u"%s %7s objects %s%s" % (total_size_str, object_count, uri,
141+
extra_info))
137142
return bucket_size
138143

139144
def cmd_ls(args):
@@ -184,18 +189,25 @@ def subcmd_bucket_list(s3, uri, limit):
184189
error(S3.codes[e.info["Code"]] % bucket)
185190
raise
186191

192+
# md5 are 32 char long, but for multipart there could be a suffix
193+
if Config().human_readable_sizes:
194+
# %(size)5s%(coeff)1s
195+
format_size = u"%5d%1s"
196+
dir_str = u"DIR".rjust(6)
197+
else:
198+
format_size = u"%12d%s"
199+
dir_str = u"DIR".rjust(12)
187200
if cfg.long_listing:
188-
format_string = u"%(timestamp)16s %(size)9s%(coeff)1s %(md5)32s %(storageclass)s %(uri)s"
201+
format_string = u"%(timestamp)16s %(size)s %(md5)-35s %(storageclass)-11s %(uri)s"
189202
elif cfg.list_md5:
190-
format_string = u"%(timestamp)16s %(size)9s%(coeff)1s %(md5)32s %(uri)s"
203+
format_string = u"%(timestamp)16s %(size)s %(md5)-35s %(uri)s"
191204
else:
192-
format_string = u"%(timestamp)16s %(size)9s%(coeff)1s %(uri)s"
205+
format_string = u"%(timestamp)16s %(size)s %(uri)s"
193206

194207
for prefix in response['common_prefixes']:
195208
output(format_string % {
196209
"timestamp": "",
197-
"size": "DIR",
198-
"coeff": "",
210+
"size": dir_str,
199211
"md5": "",
200212
"storageclass": "",
201213
"uri": uri.compose_uri(bucket, prefix["Prefix"])})
@@ -213,11 +225,11 @@ def subcmd_bucket_list(s3, uri, limit):
213225
except KeyError:
214226
pass
215227

216-
size, size_coeff = formatSize(object["Size"], Config().human_readable_sizes)
228+
size_and_coeff = formatSize(object["Size"],
229+
Config().human_readable_sizes)
217230
output(format_string % {
218231
"timestamp": formatDateTime(object["LastModified"]),
219-
"size" : str(size),
220-
"coeff": size_coeff,
232+
"size" : format_size % size_and_coeff,
221233
"md5" : md5,
222234
"storageclass" : storageclass,
223235
"uri": uri.compose_uri(bucket, object["Key"]),

0 commit comments

Comments
 (0)