It is possible to make ls -l output the size field with digits grouped by thousands? If so, how?
For instance:
$ ls -l -rw-rw---- 1 dahl dahl 43,210,052 2012-01-01 21:52 test.py
(Note the commas in the size).
Maybe by modifying the LC_NUMERIC setting inside the locale I’m using (en_US.utf8)?
I’m on Kubuntu 12.04 LTS.
Answers:
Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.
Method 1
Block size – GNU Coreutils says
A block size specification preceded by ‘ causes output sizes to be displayed with thousands separators. (Note well that just specifying a block size is not enough).
So depending on what you want, you could try
BLOCK_SIZE="'1" ls -l BLOCK_SIZE="'1kB" ls -l
or
ls -l --block-size="'1" ls -l --block-size="'1kB"
you can make it permanent using
export BLOCK_SIZE="'1" export BLOCK_SIZE="'1kB"
or
alias ls="ls --block-size="'1"" alias ls="ls --block-size="'1kB""
Method 2
With ast-open’s ls (also the ls builtin of ksh93 if built as part of ast-open):
$ ls -rSZ "%(mode)s %3(nlink)u %-8(uid)s %-8(gid)s %8(device:case::%'(size)u:*:%(device)s)s %(mtime)s %(name)s%(linkop:case:?*: %(linkop)s %(linkpath)s)s" [...] -rwxrwxr-x 1 chazelas chazelas 2,701,278 Apr 27 2016 nmake -rwxrwxr-x 2 chazelas chazelas 4,515,954 Apr 27 2016 ksh -rwxrwxr-x 2 chazelas chazelas 4,515,954 Apr 27 2016 bash -rwxrwxr-x 1 chazelas chazelas 4,542,177 Apr 27 2016 shcomp -rwxrwxr-x 1 chazelas chazelas 6,830,418 Apr 27 2016 tksh
That’s the format normally used for ls -l but with %(size)u changed to %'(size)u to show the thousand separators.
More legible:
LONG_FORMAT_WITH_THOUSAND_SEP=" %(mode)s %3(nlink)u %-8(uid)s %-8(gid)s %8(device:case::%'(size)u:*:%(device)s)s %(mtime)s %(name)s %(linkop:case:?*: %(linkop)s %(linkpath)s)s" ls -rSZ "$LONG_FORMAT_WITH_THOUSAND_SEP"
Method 3
From the man pages
--block-size=SIZE
scale sizes by SIZE before printing them. E.g., `--block-size=M'
prints sizes in units of 1,048,576 bytes. See SIZE format below.
_Here is the man page for ls, remember man is your best friend type “man man” in your terminal to find out how useful it can be.
ls
List information about files.
Syntax
ls [Options]... [File]...
Key
Sort entries alphabetically if none of -cftuSUX nor --sort.
-a, --all Do not hide entries starting with .
-A, --almost-all Do not list implied . and ..
-b, --escape Print octal escapes for nongraphic characters
--block-size=SIZE Use SIZE-byte blocks
-B, --ignore-backups Do not list implied entries ending with ~
-c Sort by change time; with -l: show ctime
-C List entries by columns
--color[=WHEN] Control whether color is used to distinguish file
types. WHEN may be `never', `always', or `auto'
-d, --directory List directory entries instead of contents
-D, --dired Generate output designed for Emacs' dired mode
-f Do not sort, enable -aU, disable -lst
-F, --classify Append indicator (one of */<a href="https://getridbug.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="1c215c">[email protected]</a>|) to entries
--format=WORD Across -x, commas -m, horizontal -x, long -l,
single-column -1, verbose -l, vertical -C
--full-time List both full date and full time
-g (ignored)
-G, --no-group Inhibit display of group information
-h, --human-readable Print sizes in human readable format (e.g., 1K 234M 2G)
-H, --si Likewise, but use powers of 1000 not 1024
--indicator-style=WORD Append indicator with style WORD to entry names:
none (default), classify (-F), file-type (-p)
-i, --inode Print index number of each file
-I, --ignore=PATTERN Do not list implied entries matching shell PATTERN
-k, --kilobytes Like --block-size=1024
-l Use a long listing format
-L, --dereference List entries pointed to by symbolic links
-m Fill width with a comma separated list of entries
-n, --numeric-uid-gid List numeric UIDs and GIDs instead of names
-N, --literal Print raw entry names (don't treat e.g. control
characters specially)
-o Use long listing format without group info
-p, --file-type Append indicator (one of /<a href="https://getridbug.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="320f72">[email protected]</a>|) to entries
-q, --hide-control-chars Print ? instead of non graphic characters
--show-control-chars Show non graphic characters as-is (default)
-Q, --quote-name Enclose entry names in double quotes
--quoting-style=WORD Use quoting style WORD for entry names:
literal, shell, shell-always, c, escape
-r, --reverse Reverse order while sorting
-R, --recursive List subdirectories recursively
-s, --size Print size of each file, in blocks
-S Sort by file size
--sort=WORD time -t, version -v, status -c
size -S, extension -X, none -U
atime -u, access -u, use -u
--time=WORD Show time as WORD instead of modification time:
atime, access, use, ctime or status;
also use this as a sort key if --sort=time
-t sort by modification time
-T, --tabsize=COLS assume tab stops at each COLS instead of 8
-u sort by last access time; with -l: show atime
-U do not sort; list entries in directory order
-v sort by version
-w, --width=COLS assume screen width instead of current value
-x list entries by lines instead of by columns
-X sort alphabetically by entry extension
-1 list one file per line
--help display help and exit
--version output version information and exit
All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0