[Linux] ファイルサイズを取得する。 | Archive Redo Blog

Archive Redo Blog

DBエンジニアのあれこれ備忘録

Linux のコマンドのみを利用して特定のファイルのサイズを取得するにはどうすればよいのでしょうか?

コマンド一発では無理なようですが(...と思っていたのですが、実は...追記参照)、以下のように wc コマンド(または ls コマンド)と awk コマンド(または cut コマンド)を組み合わせれば可能なようです。


【方法1】
wc -c test.txt | awk '{print $1}'
-c オプション付きの wc コマンドでファイルのバイト数・ファイル名を出力し、awk コマンドでバイト数のフィールドだけを抜き出して出力しています。

【方法2】
wc -c test.txt | cut -d ' ' -f1 -
-c オプション付きの wc コマンドでファイルのバイト数・ファイル名を出力し、cut コマンドでバイト数のフィールドだけを抜き出して出力しています。

【方法3】
ls -l test.txt | awk '{print $5}'
-l オプション付きの ls コマンドでファイルの詳細情報を出力し、awk コマンドでバイト数のフィールドだけを抜き出して出力しています。

【方法4】
ls -l test.txt | tr -s ' ' | cut -d ' ' -f5 -
-l オプション付きの ls コマンドでファイルの詳細情報を出力し、cut コマンドでバイト数のフィールドだけを抜き出して出力しています。
(ただし、-s オプション付きの tr コマンドで" "の繰り返しを 1文字に変換してから cut コマンドを実行しなければうまく抜き出せないようです。)



上記のような方法で取得したファイルサイズは、実際にはシェルスクリプトのなかでいかのように変数に代入して利用することが多いと思います。

SIZE=`wc -c $file | awk '{print $1}'`



【追記:コマンド一発でファイルサイズを取得する方法】

wcコマンドに標準入力からファイルを渡してやれば、ファイルサイズだけが返ってくるようです。

wc -c < test.txt