回答:
あなたは見つけることができます:
find . -type f -printf "%s %P\n" | sort -n
オプション:バイト値を人間が読める形式に変換するには、これを追加します。
| numfmt --to=iec-i --field=1
説明:
find in current directory (.) all files (-type f)
-printf: suppress normal output and print the following:
%s - size in bytes
%P - path to file
\n - new line
| sort -n: sort the result (-n = numeric)
特定のシェルを指定しなかったので、zshのglob修飾子を使用する別の方法を次に示します
setopt extendedglob
再帰のために。次に例:
プレーンファイルを再帰的に一覧表示します。
printf '%s\n' **/*(.)
再帰的にリストプレーンファイル、oをによってrdered にしわLの ength(すなわちサイズ):
printf '%s\n' **/*(.oL)
再帰的にリストプレーンファイルは、Oはでrdered デ折り目サイズ:
printf '%s\n' **/*(.OL)
サイズの小さい順に並べられたプレーンファイルを再帰的にリストし、上位3つの結果を選択します。
printf '%s\n' **/*(.OL[1,3])
ファイルサイズも必要な場合は、次を使用できます
du -hb **/*(.OL[1,3])
globstar
シェルオプションが設定されますがシェルグロブを使用することができます。
shopt -s globstar # don’t match hidden files
shopt -s globstar dotglob # match hidden files
stat -c"%s %n" **/* | sort -n
ファイル数が多すぎると、「引数リストが長すぎます」というエラーが発生します。それを回避するには、printf
and を使用できますxargs
:
printf "%s\0" **/* | xargs -0 stat -c"%s %n" | sort -n
私はこれがディレクトリ(4096バイトのサイズ)も出力することに気づきました–望まない場合は、代わりにこれを使用してください:
stat -c"%A %s %n" **/* | sed '/^d/d;s/\S* //' | sort -n
printf "%s\0" **/* | xargs -0 stat -c"%A %s %n" | sed '/^d/d;s/\S* //' | sort -n
$ tree
.
├── edits.png
├── makescript
├── new
│ └── edits.png
└── test
└── 1.png
2 directories, 4 files
$ stat -c"%s %n" **/* | sort -n
0 test/1.png
43 makescript
2160 edits.png
2160 new/edits.png
4096 new
4096 test
$ stat -c"%A %s %n" **/* | sed '/^d/d;s/\S* //' | sort -n
0 test/1.png
43 makescript
2160 edits.png
2160 new/edits.png
dotglob
シェルオプションを設定する必要があるだけです。私の最新の回答を参照してください。
printf "%s\0" **/* | xargs -0 sh -c 'for f; do [ -d "$f" ] || stat -c "%s %n" "$f"; done' sh | sort -n
ls -lhSd **/*
リストの一部としてディレクトリを使用してもかまわない場合に使用できます。または、ディレクトリ名が含ま.
れておらず、必要なすべてのファイルが含まれている場合は、できますll -hS **/*.*
。
大きすぎないディレクトリツリーでインタラクティブにすばやく使用するにshopt -s globstar
は、本当に便利です。グロブは、タイプに基づいてディレクトリを除外することはできませんが、あなたがそれを使用する場合ls -d
、その後ls
だけではなく、内容の、ディレクトリ名を表示します。
あなたのll
エイリアスが含まれていると仮定します-lh
:
# with shopt -s globstar in your .bashrc
ll -rSd **/*
このような出力(私のコードゴルフディレクトリから)が得られますが、色で強調表示されます(ディレクトリが見やすくなります)。ファイルサイズによるソートはサブディレクトリ間で発生したことに注意してください。
drwxr-xr-x 1 peter peter 70 Jun 8 07:56 casexchg
...
drwxr-xr-x 1 peter peter 342 Mar 13 18:47 parity-party
-rw-r--r-- 1 peter peter 387 Jul 29 2017 likely.cpp
-rw-r--r-- 1 peter peter 416 Aug 31 2017 true-binary.asm~
-rw-r--r-- 1 peter peter 447 Feb 23 20:14 weight-of-zero.asm
...
-rw-r--r-- 1 peter peter 6.4K Jun 1 2017 string-exponential.asm
-rwxr-xr-x 1 peter peter 6.7K Aug 31 2017 true-binary
-rwxr-xr-x 1 peter peter 6.8K Sep 17 2017 dizzy-integer
-rw-r--r-- 1 peter peter 7.5K Jul 24 2017 fibonacci/fibonacci-1G.v3-working-32b-stack-except-output.asm
-rw-r--r-- 1 peter peter 8.4K Jul 25 2017 fibonacci/perf.32bit-pop-114limb.sub-cmc.1G~
-rw-r--r-- 1 peter peter 8.4K Jul 25 2017 fibonacci/perf.32bit-pop-114limb.sub-cmc.1G
-rwxr-xr-x 1 peter peter 8.4K May 19 04:29 a.out
-rw-r--r-- 1 peter peter 8.9K Jul 25 2017 fibonacci/perf.python-xnor-2n
-rw-r--r-- 1 peter peter 9.5K Jul 26 2017 fibonacci/fibonacci-1G-performance.asm
-rwxr-xr-x 1 peter peter 9.6K Apr 12 23:25 empty-args
-rw-r--r-- 1 peter peter 9.7K Dec 18 17:00 bubblesort.asm
-rwxr-xr-x 1 peter peter 9.9K Feb 6 23:34 parity-party/a.out
-rw-r--r-- 1 peter peter 9.9K Jul 25 2017 fibonacci/fibonacci-1G-performance.asm~
...
パイプを介してディレクトリを除外できます grep -v '^d'
ファイル名にパターンがある場合は、ディレクトリではなくファイルのみに一致するグロブを使用できることがあります。たとえばll -rSd **/*.jpg
、**/*.*
ディレクトリ名がどれも含まれておらず、.
必要なすべてのファイルが含まれている場合でも機能します。
(DOSの背景を持つ人々にとって:*.*
Unixには魔法のようなものは何もありません。リテラルドットを含むディレクトリエントリに一致します。ただし、実行可能ファイルとテキストファイル以外は、ファイル名に拡張子を付けるのが一般的です。)
@dessertは、すべてのファイルshopt -s dotglob
に一致させるために必要であることを指摘しています。
find
ファイルが多すぎて1つのls
コマンドラインに収まらない場合は、並べ替え可能なfind -exec ls {} +
コマンドラインにすべてを配置しls
ます。
find -not -type d -exec ls --color -lrSh {} +
-not -type d
代わりに-type f
を使用すると、シンボリックリンク、名前付きパイプ、ソケット、デバイスファイル、およびディレクトリ内でキックしているその他すべてが無視されなくなります。
du
:du -ach | sort -h
....
4.0K x86-modedetect-polyglot.o
8.0K ascii-compress-base.asm
8.0K dizzy-integer
8.0K stopwatch-rdtsc.asm
8.0K string-exponential.asm
8.0K true-binary
12K a.out
12K bubblesort.asm
12K casexchg
12K empty-args
100K parity-party
220K fibonacci
628K total
現在、ディレクトリ名はすべての内容の合計でリストにソートされていますが、個々のファイルはまだ含まれています。
sort -h
、別名は--human-numeric-sort
、du -h
プリントのようにサイズのサフィックスが付いた数値をソートします。での使用に最適ですdu
。
私はよくdu -sch * | sort -h
、または*/
ディレクトリのみを取得するために使用します。
du -sch **/* | sort -h
オプションdu
があることを忘れた場合、上記の出力が表示され-a
ます。
(答えを投稿しているので、調べるのに時間をかけただけです。インタラクティブな使用の場合、おそらくを使用しdu -sch **/*
ただけでしょう。