ファイル/ディレクトリのリストをサイズで並べ替えることができます。
ls -lS
du
ただし、人間が読める形式で使用する場合:
du --max-depth=1 -h .
私は得る:
128K ./something
3,3M ./more
3,2M ./even-more
...
注文していないもの。そのようなデータを注文する標準的なツールはありますか?標準はsort
これをサポートしていないようです。自分でやるべきですか?
答え1
GNUには、これを処理するための/オプションとソートキーフラグがsort
あります(1024単位(1Kの前に1023がオーム)に基づいてソートを期待します。これはGNUでも計算される方法です)。-h
--human-numeric-sort
h
du
thisを使用すると、一部の精度が失われるため、du -h
順序が間違っている可能性があります。
$ du -k a b
1212 a
1208 b
$ du -h a b | sort -h
1.2M a
1.2M b
@StephenKittが述べたように、完全なdu
精度を提供し、次に変換するように指示することで問題を解決できます。人類たとえば、GNUソート形式を使用しますnumfmt
。
$ du --block-size=1 a b | sort -n | numfmt --to=iec
1.2M b
1.2M a
(間隔は影響を受けます。)上記の内容はすべて、ファイル名に改行文字が含まれていないと想定しています。
サイズによるソートに関する一般的な質問に関しては、zsh
globにはoL
glob修飾子があります(ディスク使用量ではなくサイズごとにソートされることに注意してください)。
ls -S
実行できます(GNUを使用してソートされていません)ls
。-U
ls -ldU -- *(oL)
解決後にサイズ別にシンボリックリンクを並べ替える場合:
ls -LldU -- *(-oL)
wc -c -- *(-oL)
答え2
ls
sort
GNUバリアント-h
(ニーモニック:uman)を理解しました-h
。ls -lSh
、ls -sSh
または以下を使用できますdu -h … | sort -h
。
du --max-depth=1 -h . | sort -h
ls
ディレクトリの内容のサイズは報告されないことに注意してください。