如何使用linux终端计算文件夹中的不同文件类型?

时间:2013-01-25 02:45:42

标签: linux shell terminal

嘿,我明白如何在文件夹中递归计算不同数量的文件类型/扩展名。我还需要将它们打印到.txt文件中。

例如,我将10个txt的20个.docx文件混合在多个文件夹中。

帮助我!

3 个答案:

答案 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