4

ちょっと私は、フォルダ内のさまざまな量のファイルタイプ/拡張子を再帰的にカウントする方法に夢中になっています。また、それらを.txtファイルに印刷する必要があります。

たとえば、10個のtxtの20個の.docxファイルが複数のフォルダーに混在しています。

助けて !

4

3 に答える 3

9
find ./ -type f |awk -F . '{print $NF}' | sort | awk '{count[$1]++}END{for(j in count) print j,"("count[j]" occurences)"}'

を含むすべてのファイル名を取得しfind、 を使用して拡張子を取得し、もう一度 をawk使用して出現回数をカウントしますawk

于 2013-01-25T02:53:26.127 に答える
1

bash のみ: このコードにはバージョン 4 が必要です

#!/bin/bash
shopt -s globstar nullglob
declare -A exts

for f in * **/*; do
    [[ -f $f ]] || continue     # only count files
    filename=${f##*/}           # remove directories from pathname
    ext=${filename##*.}
    [[ $filename == $ext ]] && ext="no_extension"
    : ${exts[$ext]=0}           # initialize array element if unset
    (( exts[$ext]++ ))
done

for ext in "${!exts[@]}"; do
    echo "$ext ${exts[$ext]}"
done | sort -k2nr | column -t
于 2013-01-25T18:33:34.547 に答える