特定のディレクトリにある画像とコードの割合を知る方法はありますか? [閉鎖]

特定のディレクトリにある画像とコードの割合を知る方法はありますか? [閉鎖]

どこかで.zip/tar.gzまたはプロジェクトのソースコードをダウンロードしたとしましょう。結果として得られるのは、任意のファイルの束です。一部はコードを含み、一部は画像を含みます。画像、メディアファイル、テキストファイルの割合を知る方法はありますか?これを行うことができるツールがあれば共有してください。そうでない場合は、これを実行するスクリプトや他のものをどのように作成しますか?

更新 - 受信したコメントに基づいて追加情報を提供します。

たとえば、私が言いたいことは次のとおりです。

┌─[shirish@debian] - [~/games/I-Nex] - [10054]
└─[$] [$] ll -h

total 236K
drwxr-xr-x 3 shirish shirish 4.0K 2016-11-13 21:25 debian
drwxr-xr-x 3 shirish shirish 4.0K 2016-11-13 19:16 I-Nex
drwxr-xr-x 2 shirish shirish 4.0K 2016-11-13 19:16 JSON
drwxr-xr-x 3 shirish shirish 4.0K 2016-11-13 02:12 dists
-rw-r--r-- 1 shirish shirish 7.8K 2016-11-13 02:12 i2c_smbus.rules
-rw-r--r-- 1 shirish shirish 1.4K 2016-11-13 02:12 i-nex.mk
drwxr-xr-x 2 shirish shirish 4.0K 2016-11-13 02:12 manpages
drwxr-xr-x 2 shirish shirish 4.0K 2016-11-13 02:12 pixmaps
-rw-r--r-- 1 shirish shirish   97 2016-11-13 02:12 release.conf
-rw-r--r-- 1 shirish shirish  280 2016-11-13 02:12 requirements.md
-rwxr-xr-x 1 shirish shirish 1.4K 2016-11-13 02:12 changelog.awk
-rwxr-xr-x 1 shirish shirish 2.5K 2016-11-13 02:12 Makefile
-rw-r--r-- 1 shirish shirish 6.6K 2016-11-13 02:12 README.md
-rw-r--r-- 1 shirish shirish 176K 2016-11-13 02:12 Changelog.md

この例では、pixmapsディレクトリにのみ画像/画像が含まれているので、単純ですが、テキストファイルとテキストディレクトリが占めるスペースとpixmapが占めるスペースについてはわかりません。

ベストアンサー1

#!/bin/bash

find "$1" ! -type d |
while read fpath; do
    fname="${fpath##*/}"
    suffix="${fname##*.}"

    if [[ "$suffix" == "$fname" ]]; then
        suffix="(none)"
    fi

    size="$( stat --format '%s' "$fpath" )"

    printf '%s\t%d\n' "$suffix" "$size"
done |
awk '{ sz[$1] += $2 }
     END { for (s in sz) { printf("%s:\t%d\n", s, sz[s]) } }'

コマンドラインにディレクトリがある場合、上記のスクリプトは1をbash使用してディレクトリとその下のすべてのファイルのサイズをバイト単位で取得します。 whileループはまた、各ファイルのサフィックスを傍受し、ファイルサイズ(バイト)と共に出力します。stat

最終awkスクリプト2は情報を要約して印刷する。

たとえば、作業プロジェクトの1つでディレクトリを実行します。

$ bash ./script.sh /home/kk/Work/Development/project/src/
c:      4559172
am:     369
h:      151369
o:      4613432
in:     42216
out:    3282712
(none): 2908962
Po:     18414
txt:    7129

必要に応じて、出力をさらにフィルタリングしてフォーマットすることができます。

フルサイズのパーセンテージを取得したり、fileファイル名のサフィックスに依存するのではなく、ファイルタイプを取得したり、バイト以外の単位でサイズを出力したりするように変更することは、読者の練習問題のままです。

1ここで​​の 呼び出しは、GNU coreutilsパッケージでGNUに合わせてカスタマイズされstatました。statOpenBSDstatでは完全その他。

2GNUまたはawkawkawkmawk

おすすめ記事