158416
757249
574994
144436
520739
210444
398630
1219080
256965
684782
393445
157957
273642
178980
339245
6014031
現在のディレクトリのファイルサイズは次のとおりです。次のコマンドを使用して取得しました。
ls -l | tr -s " " | cut -d " " -f5 | tail +2
とにかく、cut, echo, eval, head, ls, tail, tr
次のコマンドを使用してこれらの15個のサイズをすべて追加すると、すべてのファイルの合計サイズを取得できます。
ベストアンサー1
そのコマンドリストには数値を追加できるコマンドがないので、シェルの算術拡張を使用する必要があるようです。
それは次のとおりです。
echo "$(($(LC_ALL=C ls -nq | tr -s ' ' | cut -d ' ' -f5 | tail -n +2 | tr '\n' +)0))"
(これはファイルがデバイスファイルではなく、出力にls -l
5番目の列のサイズではなく、デバイスのキー番号があると仮定します。)
ls -l
or の出力はロケールごとに異なり、ls -n
/ 以外のロケールでは指定されません。C
POSIX
また、そうでない場合は、-q
名前またはシンボリックリンクターゲットに改行文字が含まれているファイルでは機能しません。
使用しないと、ランダムな-q
コマンド注入の脆弱性が発生します。誰かが悪意のある名前のファイルを生成する可能性のあるディレクトリからコマンドを実行しますln -s $'\nx x x x a[$(reboot)0]' x
か-q
?
-n
空白文字を含めることができるIDではなく、ユーザー/グループ名を取得しようとしています。-l
-l
廃止tail +2
予定です。標準構文はですtail -n +2
。