9
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Linuxでファイルサイズを表示する

Last updated at Posted at 2018-09-29

コマンドライン上でふとファイルサイズを確認したいときがある
どうやらwcを使うと表示できるようなのでやってみる
参考記事

wc -c < file.txt

どうやらこう書くとファイルサイズだけがバイト単位で帰ってくる模様

$ echo "View FileSize" > filesize.txt
$ wc -c < filesize.txt
14

オプションが何かを毎回調べる予感がするのでaliasに登録しておく

引数ありのalias

普段からzshを使っているので、zshでの話
Zshでは無名関数というのが使えるっぽいので
それを使ってワンライナーで実装する

.zshrc
alias filesize='(){ wc -c < $1 }'

これでfilesizeでファイルサイズをぱぱっと確認できる

$ filesize filesize.txt
14

dotfilesでGit管理してる方は忘れずPush

duではディレクトリ内というちょっと広域すぎる結果が帰ってくるようなので
wcを使って任意のファイルのファイルサイズを表示してみた

[修正(2018/10/06)]
duにファイルを渡したらファイルサイズが見れるようです
(@masami256 さん、ありがとうございます!)

$ du -bh hoge.txt
101K	hoge.txt

[追記] 見た目を改良してみた

ファイルサイズが見れて無事めでたしなのですが
画像ファイルだったりPDFファイルだったりを確認する時に
ファイルサイズがバイト表記だと桁数が多すぎて見るのがしんどくなります
なので良い感じに関数を書いてみました(初めて自分で関数書いた)
深夜テンションで書き上げたのでココこうするといいよ〜みたいなコメント大歓迎です

bcをインストール

小数第一位まで表示させたかったのでbcをインストールします

$ sudo apt install bc

aliasの削除

見た目を整形するにあたり、処理が少々複雑なので
aliasのワンライナーではなくがっつり関数を書きます
なのでさっき追加したaliasを削除

関数を追加

おそらくまるっとコピペで動くはずです

.zshrc
filesize() {
    # 初期化
    filesize=$(wc -c < $1)
    unit="B"

    # 単位を変数にしておく
    GB=$(( 1000.0 ** 3.0 ))
    MB=$(( 1000.0 ** 2.0 ))
    KB=1000.0
    
    # なんちゃって三項演算子で単位を定める
    [ `echo "$filesize >= $GB" | bc` -eq 1 ] && is_GB=true || is_GB=false
    [ `echo "$filesize >= $MB" | bc` -eq 1 ] && is_MB=true || is_MB=false
    [ `echo "$filesize >= $KB" | bc` -eq 1 ] && is_KB=true || is_KB=false

    # GB
    if $is_GB
    then
        filesize=$(( $filesize / $GB ))
        unit="GB"
    
    # MB        
    elif $is_MB
    then
        filesize=$(( $filesize / $MB ))
        unit="MB"

    # KB
    elif $is_KB
    then
        filesize=$(( $filesize / $KB ))
        unit="KB"
    fi

    # 小数点以下第一位まで表示
    printf "%.1f%s\n" $filesize $unit
}

流石に1ファイルでTBはないと思うのでBGBの範囲で準備しました
なんちゃって三項演算子はこちらを参考にしました

成果
$ filesize filesize.txt
14.0B
$ filesize kbfile.txt
2.2KB
$ filesize music.mp3
3.7MB
$ filesize movie.mp4
3.5GB

我ながらスッキリした表示でとても気に入っています

9
6
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?