録画した地デジ動画ファイルが溜まっているので、容量の大きい(GB超のもの)を取り出してブルーレイに焼きたい。動画はこんな感じ。
$ ls -shal | grep NHK.*ts.*mp4
サイズ(第1列)がギガバイト(G)のものだけにする。
$ ls -shal | grep NHK.*ts.*mp4 | awk '{ if ($1 ~ /G/) print $1,$10}'
awk は形で覚える。
$ ls -shal | grep NHK.*ts.*mp4 | awk '{ if ($1 ~ /G/) print $1,$10}'
このへん参照した。
The GNU Awk User's Guide - 正規表現
ーーー
1列目だけを合計したい。「1.4G」だとGの字が邪魔で合計できない。数値(1.4)にしたい。awkの区切り文字をGにしちゃえばいい。
$ ls -shal | grep NHK.*ts.*mp4 | awk '{ if ($1 ~ /G/) print $1,$10}' | awk -FG '{print $1}'
よし。これで数値になった。あとはこれを合計する。awkは少数でも合計できるようだ。
$ ls -shal | grep NHK.*ts.*mp4 | awk '{ if($1 ~ /G/) print $1,$10}' | awk -FG '{print $1}' | awk '{a+=$1} END{print a}'
合計56.2GBと出た。念のため検算してみる。pythonで地道に手で叩くか。
確かに 56.2GB のようだ。これは便利。
ーーー
各行と合計行をわかりやすく表示するようにした。
$ ls -shal | grep NHK.*ts.*mp4 | awk '{ if($1 ~ /G/) print $1,$10}' | awk -FG '{print $1}' | awk '{a+=$1; print $1} END{print "------\n" a}'
このへん参照。
ーーー
容量がGB超のファイルについて、サイズとファイル名を出力する。
$ ls -shal | grep NHK_ | awk '{print $1,$10}' | awk '{if($1 ~ /G/) print $1,$2}'
バッククオートに食わせて、for文に流し込んでみる。
$ for i in `ls -shal | grep NHK_ | awk '{print $1,$10}' | awk '{if($1 ~ /G/) print $1,$2}'`; do echo "$i"; done
ファイル名だけあればいい。
$ for i in `ls -shal | grep NHK_ | awk '{print $1,$10}' | awk '{if($1 ~ /G/) print $1,$2}'`; do echo "$i" | grep mp4; done
あ。for文に食わせる必要ないや。awk のときに ファイル名だけ出せばいいのか。
$ ls -shal | grep NHK_ | awk '{print $1,$10}' | awk '{if($1 ~ /G/) print $2}'
これをファイルにいったん落とす。確認の意味も含めて。
専用のフォルダを作る。
$ mkdir OVER_GB/
for文で移動する。
$ for i in `cat over_GB_files.txt`; do echo "$i"; mv "$i" OVER_GB/; done
iMac上からも確認。あとはこれをブルーレイに焼くだけ。