Linux

輸出 ls -l size 欄位,數字按千分組?

  • January 10, 2018

是否可以讓 ls -l 輸出大小欄位,其中包含以千為單位的數字?如果是這樣,怎麼做?

例如:

$ ls -l
-rw-rw---- 1 dahl dahl 43,210,052 2012-01-01 21:52 test.py

(注意大小中的逗號)。

也許通過修改我正在使用的語言環境中的 LC_NUMERIC 設置(en_US.utf8)?

我在 Kubuntu 12.04 LTS 上。

塊大小 - GNU Coreutils

以 ’ 開頭的塊大小規範會導致輸出大小以千位分隔符顯示。(請注意,僅指定塊大小是不夠的)。

所以根據你想要的,你可以試試

BLOCK_SIZE="'1" ls -l
BLOCK_SIZE="'1kB" ls -l

要麼

ls -l --block-size="'1"
ls -l --block-size="'1kB"

你可以讓它永久使用

export BLOCK_SIZE="'1"
export BLOCK_SIZE="'1kB"

要麼

alias ls="ls --block-size=\"'1\""
alias ls="ls --block-size=\"'1kB\""

使用 ast-open ls(也是ls內置的ksh93if 作為 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

這是通常用於ls -l%(size)u更改%'(size)u為顯示千位分隔符的格式。

更清晰:

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"

引用自:https://unix.stackexchange.com/questions/44898