min117の日記

初期desireもち。趣味Mac,メインFedora,仕事xp。

bash awk ファイル一覧(ls)の毎行ごとに容量の合計を表示する

 

大量の動画ファイルをブルーレイ(片面25GB)に焼いていくけど、どれとどれを焼けば合計で25GBか?を考えるのが面倒。こういうのこそコンピュータにやらせる。

ーーー

毎行ごとにファイル容量の合計を出す

$ { for i in *{ts,mp4}; do ls -shal "$i" | awk '{a+=$1; print $1,$10}'; done;} | awk '{a+=$1;print $1,a,$2} END{print "----\n" a}'

f:id:min117:20161225095337p:plain

拡張子がtsまたはmp4のファイルの一覧で、毎行ごとの合計を出してくれる。この例だと、最終行で合計が26.3GBになるからブルーレイをオーバーしちゃうのがわかる。最終行では合計も出る。

f:id:min117:20161225100459p:plain

1列目には「G」が付いているのに、無視して合計してくれるawkすごい。

ーーー

for文を無くしてシンプルにする改良。

$ ls -shal *{ts,mp4} | awk '{a+=$1;print $1,a,$10} END{print "----\n" a}'

f:id:min117:20161225100340p:plain