du
パッケージャー スクリプトで結果アーカイブのファイル サイズを取得するために使用しています:
> du -smh archive.zip
51M archive.zip
51M
印刷できるように、その部分だけを変数に割り当てたいと思います。
Archive size: 51M
どうやってやるの?
答え1
次のように実行できます:
$ variable=$(du -smh archive.zip | awk '{print $1}')
詳細
awk
出力を解析して列に分割します。列 #1 の結果だけが必要です。$( .. ) コードはコマンドを実行し、その結果を返します。
答え2
または、stat
プログラムが利用可能な場合はそれを使用します (通常、Linux ではデフォルトで利用可能です)。人間が判読できる K/M/G 変換はありませんが、数字だけを取得するために他のものは必要ありません。また、優れた書式設定オプションがあります。
sauer@humpy:~$ stat -c "%s" /etc/passwd
2302
sauer@humpy:~$ stat -c "%n size: %s bytes" /etc/passwd /etc/shadow
/etc/passwd size: 2302 bytes
/etc/shadow size: 1389 bytes
答え3
必要以上に大きなハンマーなので、ナイフを使って切ります。
variable=$(du -smh archive.zip | cut -f1 )