duでファイルサイズを抽出する方法

duでファイルサイズを抽出する方法

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 )

関連情報