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 回答
0

到目前为止,这似乎还没有解决,所以这是我计算文件并订购它们的距离:

find . -type f | sed -n 's/..*\.//p' | sort -f | uniq -ic
于 2014-06-16T23:22:29.333 回答