ちょっと私は、フォルダ内のさまざまな量のファイルタイプ/拡張子を再帰的にカウントする方法に夢中になっています。また、それらを.txtファイルに印刷する必要があります。
たとえば、10個のtxtの20個の.docxファイルが複数のフォルダーに混在しています。
助けて !
find ./ -type f |awk -F . '{print $NF}' | sort | awk '{count[$1]++}END{for(j in count) print j,"("count[j]" occurences)"}'
を含むすべてのファイル名を取得しfind
、 を使用して拡張子を取得し、もう一度 をawk
使用して出現回数をカウントしますawk
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