ファイルサイズだけを取得したい場合、ls -l
とcut
もしくはawk
を組み合わせて取得する方法が真っ先に思い浮かぶ。
$ ls -l test.txt | cut -d' ' -f5 3104 $ ls -l test.txt | awk '{print $5}' 3104
コマンドを組み合わせなくても、ファイルサイズをbyte単位で取得するには、wc -c < ファイル
だけでできる。wc -c ファイル
だとファイル名が出力されてしまうが、標準入力から渡してあげるとファイル名が出力されない。
$ wc -c test.txt 3104 test.txt $ wc -c < test.txt 3104
cat
でファイルを開いてパイプでwc -c
につないでも同じ出力が得られるが、パイプを挟むと処理性能が全く異なる。小さなファイルであれば問題ないが、大きなgzファイルのサイズを取得するときはパイプでつながないようにした方がいい。
$ ls -lh mysqldump.dmp.gz | awk '{print $5}' 5.5G $ time wc -c < mysqldump.dmp.gz 5898101831 real 0m0.001s user 0m0.000s sys 0m0.000s $ time cat mysqldump.dmp.gz | wc -c 5898101831 real 1m3.347s user 0m0.207s sys 0m4.358s
同様にwc -l < ファイル
でファイル名を出力せずにファイルの行数が取得できる。
Copyright © 2017 システム開発メモ All Rights Reserved.