出力ファイルサイズを一緒に追加する方法

出力ファイルサイズを一緒に追加する方法
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 -l5番目の列のサイズではなく、デバイスのキー番号があると仮定ます。)

ls -lor の出力はロケールごとに異なり、ls -n/ 以外のロケールでは指定されません。CPOSIX

また、そうでない場合は、-q名前またはシンボリックリンクターゲットに改行文字が含まれているファイルでは機能しません。

使用しないと、ランダムな-qコマンド注入の脆弱性が発生します。誰かが悪意のある名前のファイルを生成する可能性のあるディレクトリからコマンドを実行しますln -s $'\nx x x x a[$(reboot)0]' x-q

-n空白文字を含めることができるIDではなく、ユーザー/グループ名を取得しようとしています。-l-l

廃止tail +2予定です。標準構文はですtail -n +2

おすすめ記事