find folder1 folder2 -iname '*.txt' -print0 | du --files0-from - -c -s | tail -1
これにより、ディスク容量の使用量が拡張子ごとにバイト単位で報告されます:
find . -type f -printf "%f %s\n" |
awk '{
PARTSCOUNT=split( $1, FILEPARTS, "." );
EXTENSION=PARTSCOUNT == 1 ? "NULL" : FILEPARTS[PARTSCOUNT];
FILETYPE_MAP[EXTENSION]+=$2
}
END {
for( FILETYPE in FILETYPE_MAP ) {
print FILETYPE_MAP[FILETYPE], FILETYPE;
}
}' | sort -n
出力:
3250 png
30334451 mov
57725092729 m4a
69460813270 3gp
79456825676 mp3
131208301755 mp4
シンプル:
du -ch *.txt
総スペースを表示したいだけの場合は、次のようにします。
du -ch *.txt | tail -1
これを行う方法は次のとおりです(Linuxでは、GNU coreutils du
を使用します および Bash 構文)、悪い習慣を回避:
total=0
while read -r line
do
size=($line)
(( total+=size ))
done < <( find . -iname "*.txt" -exec du -b {} + )
echo "$total"
現在のディレクトリを除外する場合は、-mindepth 2
を使用します find
で .
Bash 構文を必要としない別のバージョン:
find . -iname "*.txt" -exec du -b {} + | awk '{total += $1} END {print total}'
これらは、改行を含むファイル名では適切に機能しないことに注意してください (ただし、スペースを含むものは機能します)。