13

' ls -l' を実行すると、次のような詳細なディレクトリ リストを取得できます。

-rw-rw-rw-  1 alice themonkeys 1159995999 2008-08-20 07:01 foo.log
-rw-rw-rw-  1 bob   bob         244251992 2008-08-20 05:30 bar.txt

ただし、これらのファイル サイズの大きさの順序を把握するには、画面に沿って指をスライドさせる必要があることに注意してください。

次のように、ディレクトリ リストのファイル サイズにコンマを追加する良い方法は何ですか。

-rw-rw-rw-  1 alice themonkeys 1,159,995,999 2008-08-20 07:01 foo.log
-rw-rw-rw-  1 bob   bob          244,251,992 2008-08-20 05:30 bar.txt
4

9 に答える 9

15

GNU Core Utils に組み込まれており、ls と du で動作することを発見しました!

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

Ubuntu では動作しますが、残念ながら OSX では動作しません。ブロックサイズのバリエーションの詳細はこちら

于 2016-03-24T13:30:31.287 に答える
10

桁数だけに関心がある場合は、次のls -lhようにします。

-rw-r----- 1 alice themonkeys 626M 2007-02-05 01:15 foo.log
-rw-rw-r-- 1 bob   bob        699M 2007-03-12 23:14 bar.txt
于 2009-01-16T08:19:47.720 に答える
8

「ls」にまさにその機能があるとは思いません。読みやすさを求める場合は、「ls -lh」を使用すると、人間が解析しやすいファイル サイズが得られます。

-rw-rw-rw-  1 alice themonkeys 1.2G 2008-08-20 07:01 foo.log
-rw-rw-rw-  1 bob   bob        244M 2008-08-20 05:30 bar.txt
于 2009-01-16T08:25:09.363 に答える
1

ls -l' ' の出力をフィルター処理してコンマを追加するperl スクリプトを次に示します。スクリプト commafy.pl を呼び出すと、'ls' を ' ' にエイリアスできますls -l | commafy.pl

#!/usr/bin/perl -p
# pipe the output of ls -l through this to add commas to numbers.

s/(.{5} )(\d{4,}) /truncatePre($1,$2).commafy($2).' '/e;


# adds commas to an integer as appropriate  
sub commafy
{
  my($num) = @_;
  my $len = length($num);
  if ($len <= 3) { return $num; }
  return commafy(substr($num, 0, $len - 3)) . ',' . substr($num, -3);
}

# removes as many chars from the end of str as there are commas to be added
#   to num
sub truncatePre
{
  my($str, $num) = @_;

  $numCommas = int((length($num)-1) / 3);

  return substr($str, 0, length($str) - $numCommas);
}
于 2009-01-16T08:19:24.973 に答える
1

実際、私は若い研修生のためのテストを探していましたが、これは理想的でした. 彼が思いついたのは次のとおりです。

for i in $(ls -1)
do
    sz=$(expr $(ls -ld $i | awk '{print $5}' | wc -c) - 1)
    printf "%10d %s\n" $sz $i
done

それは恐ろしく非効率的な方法でサイズの大きさを示します。私はあなたが彼のコードをどのように評価するかに興味があるので、このコミュニティ wiki を作成しますが、私の担当者を苦しめたくありません。

気軽にコメントを残してください (優しくしてください。彼は初心者ですが、彼のシェル スクリプトから推測することはできません :-)。

于 2009-01-16T08:42:03.383 に答える
0

これは数年前に書いたもので、標準入力で動作します。

標準入力を読み取り、読みやすくするために数字にカンマを挿入して、標準出力に出力します。例;

$ ls -l テストデータファイル.1000M
-rw-rw-r--+ 1 mkm ホイール  1048576000 4 月 24 日 12:45 testdatafile.1000M

$ ls -l テストデータファイル.1000M | コンマ
-rw-rw-r--+ 1 mkm ホイール  1,048,576,000 4 月 24 日 12:45 testdatafile.1000M

https://github.com/mikemakuch/commas

于 2015-09-10T22:06:46.680 に答える