嘿,我明白如何在文件夹中递归计算不同数量的文件类型/扩展名。我还需要将它们打印到.txt文件中。
例如,我将10个txt的20个.docx文件混合在多个文件夹中。
帮助我!
答案 0 :(得分: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
来计算出现次数
答案 1 :(得分: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
答案 2 :(得分:0)
find . -type f | sed -n 's/..*\.//p' | sort -f | uniq -ic